TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

341
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

Transcript of TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Page 1: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TYPO3 CMS 7 LTS - What’s NewBackend User Interface

Patrick Lobacher (Vorstand pluswerk AG)http://www.pluswerk.ag

10/November/2015Creative Commons BY-NC-SA 3.0

Page 2: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Introduction

TYPO3 CMS 7 LTS - What’s New

Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig vonder Rolle, können die folgenden Themen ebenfalls interessant sein:

BEUserInterface

TypoScript

In-DepthChanges

Extbase/Fluid

Deprecated/Rem

oved

Sys.Administration

Redakteure XIntegratoren X X XEntwickler X X XSysAdmins X

Download aller What’s New Slides unter typo3.org

TYPO3 CMS 7 LTS - What’s New

Page 3: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Backend User InterfaceDie größte und aufälligste Änderung ist sicher das überarbeitete BackendUser Interface. Es basiert nun komplett auf Twitter Bootstrap, verfügt überein modernes und responsives Design und stellt sicher, das Redakteure ihreAufgaben 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 beimHochladen ins Backend direkt beschnitten werden.Agenturen können zudem die Login-Seite individualisieren und Redakteurewerden zahlreiche weitere tolle Features vorfinden, die ihre tägliche Arbeiterleichtert.

TYPO3 CMS 7 LTS - What’s New

Page 4: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 mitabgerundeten Ecken entworfen

Breite der Funktionenleiste kann soweit reduziert werden, dass nurnoch Icos sichtbar sind

TYPO3 CMS 7 LTS - What’s New

Page 5: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Look & Feel

TYPO3 CMS 7 LTS - What’s New

Page 6: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Look & Feel

TYPO3 CMS 7 LTS - What’s New

Page 7: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Look & Feel

TYPO3 CMS 7 LTS - What’s New

Page 8: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Backend Benutzeranmeldung

TYPO3 CMS 7 LTS - What’s New

Page 9: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Top Bar (Module Menu)

TYPO3 CMS 7 LTS - What’s New

Page 10: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Listen Modul und Zwischenablage

TYPO3 CMS 7 LTS - What’s New

Page 11: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Tabellen

TYPO3 CMS 7 LTS - What’s New

Page 12: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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

Page 13: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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

Page 14: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Flash Messages

FlashMessage-Boxen im Backend wurden überarbeitetDafür wurde der Kontrast von Text und Box erhöht und Links werdenbesser hervorgehoben

TYPO3 CMS < 7.0 TYPO3 CMS >= 7.0

TYPO3 CMS 7 LTS - What’s New

Page 15: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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

Page 16: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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

Page 17: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Look & Feel: Funktionen-Modul

Die Funktionen "Seiten sortieren" und "mehrere Seiten erzeugen" sind jetztunter WEB => Funktionen zu finden(in TYPO3 CMS < 7.1 waren diese unter "WEB => Funktionen => Wizards" zu finden)

TYPO3 CMS 7 LTS - What’s New

Page 18: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Look & Feel: Access-Modul

Im Modul WEB => Access kann man Benutzer und/oder Gruppenunverändert lassen, wenn man nur die Berechtigungen ändern möchte

TYPO3 CMS 7 LTS - What’s New

Page 19: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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

Page 20: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Anpassbares Anmeldeformular

In der Systemextension backend kann sowohl ein Hintergrundbild, ein Logound die Signalfarbe für die Anmeldeformular eingestellt werden:

TYPO3 CMS 7 LTS - What’s New

Page 21: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Bild-Manipulation (Cropping)

Für Bilder kann im Backend bei der Verwendung einer Referenz (z.B. inInhalts-Elementen) ein Ausschnitt ausgewählt werden. Diese Funktion mussallerdings für den Redakteur explizit erlaubt werden ("Exclude Fields"):

TYPO3 CMS 7 LTS - What’s New

Page 22: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Benutzergruppen

Die Backend Benutzergruppen können im Modul "Backend Users" verwaltetwerden:

TYPO3 CMS 7 LTS - What’s New

Page 23: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Automatische Installationen unterbinden

In den Einstellungen des Extension-Managers kann die automatischeInstallation von Extensions nach dem Download deaktiviert werden:

TYPO3 CMS 7 LTS - What’s New

Page 24: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Verbleibende Anzahl von Zeichen

Unterhalb von Textfeldern wird die verbleibende Anzahl der maximalzulässigen Zeichen angezeigt:

TYPO3 CMS 7 LTS - What’s New

Page 25: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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

Page 26: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Systeminformationen

Eine Kurzübersicht der Systeminformationen kann per Klick neben demBenutzer-Icon abgerufen werden. Die Informationen in diesem Dialog sinderweitern (siehe Kapitel "Änderungen im System"):

TYPO3 CMS 7 LTS - What’s New

Page 27: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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

Page 28: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Icon für "Show Content from Page"

Im Seitenbaum zeigt ein neues Icon an, ob eine Seite Inhalte von eineranderen Seite enthält ("Show Content from Page"):

TYPO3 CMS 7 LTS - What’s New

Page 29: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Extension Update

Beim Update einer Extension wird gefragt, auf welche Version aktualisierenwerden soll:

(es wird nicht mehr generell auf die letzte, verfügbare Version aktualisiert)

TYPO3 CMS 7 LTS - What’s New

Page 30: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Recycler Task

Die Systemextension recycler bringt nun einen Scheduler Task mit, mitdem gelöschte Datensätze aus Content-Tabellen vollständig entfernt werdenkönnen (inkl. referenzierte Dateien, sofern vorhanden).(max. Alter, ab wann Content gelöscht werden kann, ist konfigurierbar)

TYPO3 CMS 7 LTS - What’s New

Page 31: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Seitentitel im Page- und List-Modul

Im Page- und List-Modul kann man den Seitentitel entweder perDoppelklick oder mit Klick auf das Bearbeitungssymbol ändern.

TYPO3 CMS 7 LTS - What’s New

Page 32: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Prozessierte FAL Dateien im Install Tool löschen

Das Install Tool enthält nun ein neues Tool (unterhalb von "Clean up"), umprozessierte FAL Dateien (wie z.B. Thumbnails) zu löschen. Das istinsbesondere hilfreich, wenn man grafik-relevante Settings ändern oderwenn man GraphicsMagick/ImageMagick aktualisiert hat und alle Dateienneu generieren will.

TYPO3 CMS 7 LTS - What’s New

Page 33: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Copyright in FAL Meta-Daten

In den zusätzlichen FAL Meta-Daten (Extension: filemetadata) gibt esnun ein Feld "Copyright".

TYPO3 CMS 7 LTS - What’s New

Page 34: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Avatare für Backend Benutzer

Backend Benutzer können nun Avatare festlegen. Diese werden in denBenutzereinstellungen gepflegt und beispielsweise oben neben demAnmeldenamen oder in den Benutzerlisten angezeigt.

TYPO3 CMS 7 LTS - What’s New

Page 35: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Dateien ersetzen

Es ist nun möglich, Dateien in der FAL Dateiliste zu ersetzen. Hierzu mussdie "Erweiterte Ansicht" aktiviert sein. Je nach Bedarf kann der bisherigeDateinamen beibehalten oder der neue verwendet werden.

TYPO3 CMS 7 LTS - What’s New

Page 36: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Onlinestatus anzeigen

Im Modul "Backend Benutzer" wird nun angezeigt, ob ein Benutzermomentan online ist.

TYPO3 CMS 7 LTS - What’s New

Page 37: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Zweite Optionspalette entfernt

Die Checkbox "Show secondary options (palettes)" sowie die TSconfigoptions.enableShowPalettes und die zugehörigen TCA-Einstellungenwurden entfernt. Die "Paletten" sind nun immer sichtbar und können nichtmehr ausgeblendet werden.

TYPO3 CMS 7 LTS - What’s New

Page 38: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Beschreibung für Backend Benutzer

Backend Benutzer können nun auch eine Beschreibung erhalten.

TYPO3 CMS 7 LTS - What’s New

Page 39: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Beschreibung im Backend anzeigen

Über die TCA-Einstellung [’TCA’][’ctrl’][’descriptionColumn’]

kann eine Spalte ausgewählt werden (meist description), die eineBeschreibung enthält. Ist diese vorhanden, wird der Inhalt beispielsweiseim Listenmodul angezeigt.

TYPO3 CMS 7 LTS - What’s New

Page 40: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Beschreibung für Filemounts

Filemounts können ebenfalls eine Beschreibung erhalten.

TYPO3 CMS 7 LTS - What’s New

Page 41: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Überschreiben Dialog beim Upload

Sofern bei einem Upload Dateien bereits auf dem Server existieren, werdenin einem Dialog mehrere Optionen zur Auswahl angeboten.

TYPO3 CMS 7 LTS - What’s New

Page 42: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Editieren von Inhaltselementen für Nicht-Admins einschränken

Inhaltselemente können jetzt für die Bearbeitung durch Nicht-Adminseingeschränkt werden (ähnliche Funktion die es bereits bei Seiten gibt).

TYPO3 CMS 7 LTS - What’s New

Page 43: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Statische TSconfig Dateien (1)

In den Seiteneigenschaften können nun statische TSconfig Dateieneingebunden werden.

TYPO3 CMS 7 LTS - What’s New

Page 44: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Statische TSconfig Dateien (2)

Die TSconfig Dateien werden wie folgt registriert:\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerPageTSConfigFile(

’extension_name’,’Configuration/PageTS/myPageTSconfigFile.txt’,’My special configuration’

);

TYPO3 CMS 7 LTS - What’s New

Page 45: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Echte Sprachkopien

Es ist nun möglich, "richtige" Kopien von Inhaltselementen inSprachversionen anzulegen (und nicht nur Referenzen).

TYPO3 CMS 7 LTS - What’s New

Page 46: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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

Page 47: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Inhaltselement textmedia

Ein neues Inhaltselement "Text & Media", fasst die bisher bekanntenElemente text, image und textpic zusammen.

TYPO3 CMS 7 LTS - What’s New

Page 48: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

YouTube- und Vimeo-Dateien

Über das erwähnte Inhaltselement "Text & Media" können auch externeYouTube- und Vimeo-Dateien, sowie lokale Dateien eingefügt werden.

TYPO3 CMS 7 LTS - What’s New

Page 49: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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

Page 50: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Benachrichtigungseinstellungen bei Workspaces (1)

Die Benachrichtigungseinstellungen (engl. Notification Settings) innerhalbder Workspaces wurden überarbeitet

TYPO3 CMS 7 LTS - What’s New

Page 51: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Benachrichtigungseinstellungen bei Workspaces (2)

Man kann nun sogar für den Stage publish-execute Einstellungenvornehmen

TYPO3 CMS 7 LTS - What’s New

Page 52: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Backend User Interface

Suche im Dateibrowser

Im Popup des Dateibrowser ist nun eine einfache Suche integriert, dierekursiv agiert

TYPO3 CMS 7 LTS - What’s New

Page 53: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Sources and Authors

Quellen und Autoren

TYPO3 CMS 7 LTS - What’s New

Page 54: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Sources and Authors

Quellennachweis

TYPO3 News:http://typo3.org/news

Release Infos:https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.xINSTALL.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.githttps://git.typo3.org/Packages/TYPO3.Fluid.git

TYPO3 CMS 7 LTS - What’s New

Page 55: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Sources and Authors

pluswerk

pluswerk ist eine Full Service Agentur für leidenschaftliche digitaleKommunikation 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

Page 56: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TYPO3 CMS 7 LTS - What’s NewTSconfig & TypoScript

Patrick Lobacher (Vorstand pluswerk AG)http://www.pluswerk.ag

10/November/2015Creative Commons BY-NC-SA 3.0

Page 57: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Introduction

TYPO3 CMS 7 LTS - What’s New

Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig vonder Rolle, können die folgenden Themen ebenfalls interessant sein:

BEUserInterface

TypoScript

In-DepthChanges

Extbase/Fluid

Deprecated/Rem

oved

Sys.Administration

Redakteure XIntegratoren X X XEntwickler X X XSysAdmins X

Download aller What’s New Slides unter typo3.org

TYPO3 CMS 7 LTS - What’s New

Page 58: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

TSconfig & TypoScriptTypoScript wird verwendet, um hierarchische Informationen in einer Strukturzu verwalten um damit die TYPO3 CMS Instanz zu konfigurieren. In TYPO3CMS 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 dieIntegritä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 zufinden.

TYPO3 CMS 7 LTS - What’s New

Page 59: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 werdenmod.linkvalidator.mychecker.myvar = 1

Dort steht das TSconfig dann als $this->tsConfig zur Verfügung

TYPO3 CMS 7 LTS - What’s New

Page 60: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Links zu deaktivierten Datensätzen im Linkhandler melden

Bisher hat der Linkhandler lediglich gewarnt, wenn es Links zugelöschten oder nicht existierenden Datensätzen gab

Über die folgende TSconfig Einstellung kann nun auch eine Warnungaktiviert werden, wenn der Link auf einen deaktivierten Datensatz zeigt:mod.linkvalidator.linkhandler.reportHiddenRecords = 1

TYPO3 CMS 7 LTS - What’s New

Page 61: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

RTE: mehrere CSS Klassen

Um das Handling mit komplexen CSS Frameworks wie Twitter Bootstrapzu handhaben, muss es möglich sein, mehrere Klassen an ein Elementzu vergeben

Mit diesem neuen Feature muss der Autor nur noch einen Styleauswählen, um dies zu erreichen, und nicht mehrere

RTE.classes.[ *classname* ] {.requires = list of CSS classes

}

TYPO3 CMS 7 LTS - What’s New

Page 62: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

RTE: nicht-selektierbare Klassen

Man kann nun Klassen als "nicht-selektierbar" im Style-Selektor desRTE konfigurieren

// der Wert "1" bedeutet, class ist auswaehlbar// der Wert "0" bedeutet, class ist nicht auswaehlbarRTE.classes.[ *classname* ] {

.selectable = 1}

TYPO3 CMS 7 LTS - What’s New

Page 63: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

RTE: mehrere CSS-Dateien einbinden

Man kann nun mehrere CSS-Dateien in den RTE laden

RTE.default.contentCSS {file1 = fileadmin/rte_stylesheet1.cssfile2 = 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

Page 64: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Exception während Rendering erzeugen - Teil 1

Sobald Fehler im Rendering von einzelnen Inhaltselementen (ContentObjects) (z.B. mittels USER) auftreten, wird eine Fehlermeldungerzeugt, die in TYPO3 CMS < 7.0 die gesamte Ausgabe zerstört

In TYPO3 CMS 7.0 wurde ein Exception-Handling eingeführt, welcheseine Fehlermeldung in die Ausgabe an der Stelle integriert, an der dasRendering stattgefunden hat

TYPO3 CMS 7 LTS - What’s New

Page 65: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 handlingconfig.contentObjectExceptionHandler =

TYPO3\CMS\Frontend\ContentObject\Exception\ProductionExceptionHandler

# customised error message (show random error code)config.contentObjectExceptionHandler.errorMessage = Oops an error occurred. Code: %s

# configuration of exception codes, which are not dealt withtt_content.login.20.exceptionHandler.ignoreCodes.10 = 1414512813

# deactivation of exception handling for a specific plugins or content objectstt_content.login.20.exceptionHandler = 0

# ignoreCodes and errorMessage can be configured globally...config.contentObjectExceptionHandler.errorMessage = Oops an error occurred. Code: %sconfig.contentObjectExceptionHandler.ignoreCodes.10 = 1414512813

# ...or locally for individual content objectstt_content.login.20.exceptionHandler.errorMessage = Oops an error occurred. Code: %stt_content.login.20.exceptionHandler.ignoreCodes.10 = 1414512813

TYPO3 CMS 7 LTS - What’s New

Page 66: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

StdWrap für page.headTag

TypoScript Option page.headTag hat nun stdWrap-Funktionalitätpage = PAGEpage.headTag = <head>page.headTag.override = <head class="special">page.headTag.override.if {

isInList.field = uidvalue = 24

}

TYPO3 CMS 7 LTS - What’s New

Page 67: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

JavaScript-Dateien asynchron laden

JavaScript-Dateien könen nun asynchron geladen werden

page {includeJS {

jsFile = /path/to/file.jsjsFile.async = 1

}}

Das gilt für:

includeJSlibs / includeJSLibsincludeJSFooterlibsincludeJSincludeJSFooter

TYPO3 CMS 7 LTS - What’s New

Page 68: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

HMENU Eigenschaft mit additionalWhere

TypoScript cObject HMENU erhält eine neue EigenschaftadditionalWhereJenes erlaubt eine spezifischere DB Abfrage (z.B. Filterung)

Beispiel:

lib.authormenu = HMENUlib.authormenu.1 = TMENUlib.authormenu.1.additionalWhere = AND author!=""

TYPO3 CMS 7 LTS - What’s New

Page 69: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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, welcheSeiten im Menü erscheinen sollen:

excludeNoSearchPagesincludeNotInMenu

Beispiel:

lib.browsemenu = HMENUlib.browsemenu.special = browselib.browsemenu.special.excludeNoSearchPages = 1lib.browsemenu.includeNotInMenu = 1

TYPO3 CMS 7 LTS - What’s New

Page 70: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Mehrere HTTP-Header

HTTP Header können nun mittels config.additionalHeadersals Array gesetzt werden

Das ermöglicht es, mehreren Header-Zeilen auf einmal zu konfigurierenconfig.additionalHeaders {

10 {# header stringheader = WWW-Authenticate: Negotiate# (optional) replace previous headers with the same name (default: 1)replace = 0# (optional) force HTTP response codehttpResponseCode = 401

}# set second additional HTTP header20.header = Cache-control: Private

}

TYPO3 CMS 7 LTS - What’s New

Page 71: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Option "auto" für config.absRefPrefix

TypoScript Konfiguration config.absRefPrefix kann verwendetwerden, um der URL einen Prefix bei relativen Pfaden zu geben. AlsAlternative zu config.baseURL (um eine bestimmte Domain zuspezifizieren), 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

Page 72: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Zwei-Zeichen ISO Code für sys_language (1)

Die Behandlung von Sprachen wird durch Einträge in DB Tabellesys_language vorgenommen, die durch sys_language_uidreferenziert werden

In TYPO3 CMS 7.1 wurden ISO 639-1 Zwei-Zeichen Codes implementiert:

Neues DB Feld: sys_language.language_isocodeNeue 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-1Codes ist hier abrufbar:http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes

TYPO3 CMS 7 LTS - What’s New

Page 73: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Zwei-Zeichen ISO Code für sys_language (2)

Beispiel:

# Danish by defaultconfig.sys_language_uid = 0config.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 requiredconfig.sys_language_isocode = fr

[GLOBAL]

page.10 = TEXTpage.10.data = TSFE:sys_language_isocodepage.10.wrap = <div class="main" data-language="|">

TYPO3 CMS 7 LTS - What’s New

Page 74: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Eigene Conditions im Backend

Eigene Conditions für das Frontend wurden bereits mit TYPO3 CMS 7.0eingeführt

Seit TYPO3 CMS 7.1 ist es nun auch möglich, eigene Conditions für dasBackend zu implementieren

Die Condition muss von AbstractCondition ableiten und dieMethode matchCondition bereitstellen

Anwendungsbeispiel in TypoScript:[BigCompanyName\TypoScriptLovePackage\MyCustomTypoScriptCondition]

[BigCompanyName\TypoScriptLovePackage\MyCustomTypoScriptCondition = 7]

[BigCompanyName\TypoScriptLovePackage\MyCustomTypoScriptCondition = 7, != 6]

[BigCompanyName\TypoScriptLovePackage\MyCustomTypoScriptCondition = {$mysite.myconstant}]

TYPO3 CMS 7 LTS - What’s New

Page 75: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Zufügen von Icons in TCEFORM via PageTSconfig

Eigene Werte und Labels von Select-Feldern können bereits mit derPageTSconfig Option addItems vergeben werden

Nun können auch Icons für diese Felder definiert werden

Option 1: mittels addItems und der Eigenschaft .iconOption 2: mittels altIcons (generell für alle Felder)

Beispiel:TCEFORM.pages.doktype.addItems {

10 = My Label10.icon = EXT:t3skin/icons/gfx/i/pages.gif

}TCEFORM.pages.doktype.altIcons {

10 = EXT:myext/icon.gif}

TYPO3 CMS 7 LTS - What’s New

Page 76: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Element Browser: Mountpoints hinzufügen

Neue UserTSconfig Option .append erlaubt es AdministratorenMountpoints hinzuzufügen, anstatt die Liste der konfigurierten DBMountpoints eines Benutzers neu zu schreiben

Beispiel:

options.pageTree.altElementBrowserMountPoints = 20,31options.pageTree.altElementBrowserMountPoints.append = 1

TYPO3 CMS 7 LTS - What’s New

Page 77: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Überschreiben der Labels von Radio-Buttons und Checkboxen

Labels von Radio-Buttons und Checkboxen können nun überschriebenwerden

Beispiel:// field with a single checkbox (use ".default")TCEFORM.pages.hidden.altLabels.default = new labelTCEFORM.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 checkboxTCEFORM.pages.l18n_cfg.altLabels.1 = new label of second checkboxTCEFORM.pages.l18n_cfg.altLabels.2 = new label of third checkbox...

TYPO3 CMS 7 LTS - What’s New

Page 78: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Diverses (1)

Breite und Höhe des Element-Browsers können nun per UserTSconfigfestgelegt werden

options.popupWindowSize = 400x900options.RTE.popupWindowSize = 200x200

PageTSconfig: mit einer neue RTE-Konfiguration kann dasStandard-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

Page 79: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Diverses (2)

Standardmäßig sind Section-Headlines der Indexed-Search Resultateverlinkt. Das kann nun mittels TypoScript deaktiviert werdenplugin.tx_indexedsearch.linkSectionTitles = 0

getData kann jetzt auch field-Daten abfragen (nicht nur Arrays, wiebeispielsweise GPVar und TSFE)10 = TEXT10.data = field:fieldname|level1|level2

TypoScript Konfiguration config.pageTitle hat jetztstdWrap-Funktionalität# make value of <title> upper casepage = PAGEpage.config.pageTitle.case = upper

TYPO3 CMS 7 LTS - What’s New

Page 80: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Konfigurierbarer Vorschau-Link (1)

Es ist nun möglich, die URL zur Vorschau einer Seite zu definieren, diedurch den Button "Speichern & Vorschau" aufgerufen wird.

Damit kann man unterschiedliche Links für Blog- oderNews-Datensätze, aber auch für Inhaltselemente generieren lassen.TCEMAIN.preview {

<table name> {previewPageId = 123useDefaultLanguageRecord = 0fieldToParameterMap {

uid = tx_myext_pi1[showUid]}additionalGetParameters {

tx_myext_pi1[special] = HELLO}

}}

TYPO3 CMS 7 LTS - What’s New

Page 81: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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

Page 82: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

RTE Konfiguration: Default-Target

Das Default-Target in der RTE Konfiguration ist nun im PageTSconfigabhängig vom Typ einstellbar

buttons.link.[ type ].properties.target.default = ...

Als "type" sind folgende Werte zulässig:(weitere können via Extensions eingebracht werden)

pagefileurlmailspec

TYPO3 CMS 7 LTS - What’s New

Page 83: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Leere HTML-Tags im HTMLparser löschen

Es ist nun möglich, leere HTML-Tags im HTMLparser zu löschenstdWrap {

// Hier werden alle leeren HTML-Tags entferntHTMLparser.stripEmptyTags = 1// Hier werden nur leere h2 und h3 Tags entferntHTMLparser.stripEmptyTags.tags = h2, h3

}

RTE.default.proc.entryHTMLparser_db {stripEmptyTags = 1stripEmptyTags.tags = pstripEmptyTags.treatNonBreakingSpaceAsEmpty = 1

}

Da der HtmlParser unbekannte Tags grundsätzlich entfernt, ist esratsam, diese zunächst zu behalten:HTMLparser.keepNonMatchedTags = 1

TYPO3 CMS 7 LTS - What’s New

Page 84: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Diverses

Der Button für "Abkürzung" (engl. abbreviation) im RTE kann nun in derPageTSconfig ausgeblendet werden (da nicht mehr HTML5 konform):

# moegliche Wert sind:# acronym, definedAcronym, abbreviation, definedAbbreviationbuttons.abbreviation.removeFieldsets = acronym,definedAcronym

Die Eigenschaft inlineLanguageLabel des Objekts PAGE kann nunauch mit LLL:-Referenzen umgehen

TYPO3 CMS 7 LTS - What’s New

Page 85: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 = TEXTdate_as_timestamp {

value = 2015-04-15strtotime = 1

}

next_weekday = TEXTnext_weekday {

data = GP:selected_datestrtotime = + 2 weekdaysstrftime = %Y-%m-%d

}

TYPO3 CMS 7 LTS - What’s New

Page 86: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

GPmerged in Conditions

Prüft man in Conditions nur mittels GP so wird beim gleichzeitigenVorhandensein von POST- und GET-Variablen (z.B.tx_demo_demo[...]=...), lediglich die POST-Variablezurückgegeben

Mit der neuen Option GPmerged werden beide Variablenzusammengeführt und dann zurückgegeben

[globalVar = GPmerged:tx_demo|foo = 1]page.90 = TEXTpage.90.value = DEMO

[global]

TYPO3 CMS 7 LTS - What’s New

Page 87: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Weitere Werte für die Funktion stdWrap.case

Die stdWrap Funktion case ist um die beiden Werte uppercamelcaseund lowercamelcase ergänzt worden

Beispiel:tt_content = CASEtt_content {

key.field = CTypemy_custom_ctype =< lib.userContentmy_custom_ctype {

file = EXT:site_base/Resources/Private/Templates/SomeOtherTemplate.htmlsettings.extraParam = 1

}default =< lib.userContentdefault {

file = TEXTfile.field = CTypefile.stdWrap.case = uppercamelcasefile.wrap = EXT:site_base/Resources/Private/Templates/|.html

}}

TYPO3 CMS 7 LTS - What’s New

Page 88: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Eigenschaft integrity für JavaScript-Dateien (1)

Es wurde die Eigenschaft integrity zugefügt, um einen SRI Hash zumJavaScript-Markup hinzuzufügen, mit dem die Quelle verifiziert werdenkann (SRI: Sub-Resource Integrity)

Dies betrifft die Eigenschaften page.includeJSLibs,page.includeJSFooterlibs, includeJS und includeJSFooterBeispiel:page {

includeJS {jQuery = https://code.jquery.com/jquery-1.11.3.min.jsjquery.external = 1jQuery.disableCompression = 1jQuery.excludeFromConcatenation = 1jQuery.integrity = sha256-7LkWEzqTdpEfELxcZZlS6wAx5Ff13zZ83lYO2/ujj7g=

}}

TYPO3 CMS 7 LTS - What’s New

Page 89: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Eigenschaft integrity für JavaScript-Dateien (2)

SRI ist eine Spezifikation des W3C, die es ermöglicht zu verifizieren, obextern gehostete Dateien manipuliert worden sind

Erstellen von Integrity Hashes:

Option 1: https://srihash.orgOption 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

Page 90: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Data-Provider für Backend Layouts (1)

Backend-Layouts können jetzt per PageTSconfig definiert und damitauch in Dateien ausgelagert werden. Zum Beispiel:mod {

web_layout {BackendLayouts {

exampleKey {title = Exampleconfig {

backend_layout {colCount = 1rowCount = 2rows {

1 {columns {

1 {name = LLL:EXT:frontend/ ... /locallang_ttc.xlf:colPos.I.3colPos = 3colspan = 1

}}

}[...]

TYPO3 CMS 7 LTS - What’s New

Page 91: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Data-Provider für Backend Layouts (2)

(Fortsetzung)

[...]2 {

columns {1 {

name = MaincolPos = 0colspan = 1

}}

}}

}}icon = EXT:example_extension/Resources/Public/Images/BackendLayouts/default.gif

}}

}}

TYPO3 CMS 7 LTS - What’s New

Page 92: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Erweiterung der Option page.meta

Die Option page.meta unterstützt nun auch Open Graph Attributnamenpage {

meta {X-UA-Compatible = IE=edge,chrome=1X-UA-Compatible.attribute = http-equivkeywords = TYPO3# <meta property="og:site_name" content="TYPO3" />og:site_name = TYPO3og:site_name.attribute = propertydescription = Inspiring people to shareog:description = Inspiring people to shareog:description.attribute = propertyog:locale = en_GBog:locale.attribute = propertyog:locale:alternate {

attribute = propertyvalue.1 = fr_FRvalue.2 = de_DE

}refresh = 5; url=http://example.com/refresh.attribute = http-equiv

}}

TYPO3 CMS 7 LTS - What’s New

Page 93: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

languageField wird automatisch gesetzt

In der TypoScript-Option select (die beispielsweise beim cObjectCONTENT verwendet wird) musste man bisher das languageFieldexplizit setzen

Jenes wird nun automatisch gesetzt und kann daher weglassen werdenconfig.sys_language_uid = 2page.10 = CONTENTpage.10 {

table = tt_contentselect.where = colPos=0

# Die nachfolgende Zeile ist nicht notwendig:#select.languageField = sys_language_uid

renderObj = TEXTrenderObj.field = headerrenderObj.htmlSpecialChars = 1

}

TYPO3 CMS 7 LTS - What’s New

Page 94: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Individuelles Content Caching

Es gibt nun ein individuelles Content Caching, welches im Gegensatz zustdWrap.cache auch mit COA-Objekten funktioniert (ähnlich dem"Magento Block Caching")

page = PAGEpage.10 = COApage.10 {

cache.key = coaoutcache.lifetime = 60#stdWrap.cache.key = coastdWrap#stdWrap.cache.lifetime = 6010 = TEXT10 {

cache.key = mycurrenttimestampcache.lifetime = 60data = date : Ustrftime = %H:%M:%SnoTrimWrap = |10: | |

}[...]

[...]20 = TEXT20 {

data = date : Ustrftime = %H:%M:%SnoTrimWrap = |20: | |

}}

TYPO3 CMS 7 LTS - What’s New

Page 95: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Zähler für listNum

Es gibt eine neue Eigenschaft returnCount für die stdWrapEigenschaft splitDamit kann die Anzahl der Elemente in einer kommaseparierten Listeermittelt werden

Das folgende Beispiel gibt 9 zurück:1 = TEXT1 {

value = x,y,z,1,2,3,a,b,csplit.token = ,split.returnCount = 1

}

TYPO3 CMS 7 LTS - What’s New

Page 96: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Sortierung von Tabellen im Backend

Über die TSconfig Option mod.web_list.tableDisplayOrder kanneingestellt 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_groupssys_filemounts.after = be_userspages_language_overlay.before = pagesfe_users.after = fe_groupsfe_users.before = pages

}

TYPO3 CMS 7 LTS - What’s New

Page 97: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Content Language im HTTP Header

Es wird nun standardmäßig Content-language: XX im HTTPResponse Header an den Client gesendet, wobei "XX" dem ISO-Codeentspricht, der via sys_language_content konfiguriert wurde

Dabei kann sys_language_content unterschiedlich zusys_language_uid sein, wenn der Inhalt von der Fallback-Spracheermittelt wird(jenes hängt von der Einstellung sys_language_mode ab)

Über die Einstellung config.disableLanguageHeader = 1 kannder Header bei Bedarf auch deaktiviert werden

TYPO3 CMS 7 LTS - What’s New

Page 98: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Rekursive Option für ordner-basierte File Collections

Ordner-basierte File Collections haben nun eine Option um rekursiv alleDateien für einen gegebenen Ordner zu ermitteln

Die Option ist ebenfalls für das TypoScript Objekt FILES verfügbar

filecollection = FILESfilecollection {

folders = 1:images/folders.recursive = 1renderObj = IMAGErenderObj {

file.import.data = file:current:uid}

}

TYPO3 CMS 7 LTS - What’s New

Page 99: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Extension .ts für Static Templates

Bislang waren für statische TypoScript Templates nur die folgendenDateinamen zugelassen:

constants.txtsetup.txtinclude_static.txtinclude_static_files.txt

Als Extension kann nun auch .ts verwendet werden

Dabei hat .ts Vorrang vor .txt

TYPO3 CMS 7 LTS - What’s New

Page 100: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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.disableButtonForDokTypeDer Standardwert ist "254, 255, 199" (Storage Folder, Recycler undMenu Seperator)

In Foldern und Recycler-Seiten ist der "save & view" Button daherstandardmäßig nicht mehr sichtbar

TYPO3 CMS 7 LTS - What’s New

Page 101: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

stdWrap für treatIdAsReference

Für das Objekt getImgResource existiert die OptiontreatIdAsReference, die ggf. definiert, dass die angegebenen UIDsals 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

Page 102: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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) nurdann 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\\/Server\\d+$/">

TYPO3 CMS 7 LTS - What’s New

Page 103: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

TCA-Option, um Datum Feldweise auszublenden

Es gibt nun eine TCA-Option disableAgeDisplay, um die Anzeige desDatums auszublendenVoraussetzung hierfür ist, dass der Typ des Feldes input ist, und evalauf date gesetzt ist$GLOBALS[’TCA’][’tt_content’][’columns’][’date’][’config’][’disableAgeDisplay’] = true;

TYPO3 CMS 7 LTS - What’s New

Page 104: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Inline Sprachlabels mit TypoScript (1)

Man kann nun Sprachdateien mittels TypoScript auslesen und alsInline-Array in den Quelltext schreiben, um z.B. per JavaScript daraufzuzugreifen

Folgende Optionen sind möglich:

selectionPrefix:nur Schlüssel, die mit diesem Prefix anfangen, werden ermitteltstripFromSelectionName:String, der von jedem Schlüssel entfernt wirderrorMode:Mode, wenn die Sprachdatei nicht gefunden wird(0: Eintrag im Syslog vornehmen, 1: ignorieren, 3: Exception generieren)

TYPO3 CMS 7 LTS - What’s New

Page 105: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Inline Sprachlabels mit TypoScript (2)

Beispiel:page = PAGEpage.inlineLanguageLabelFiles {

someLabels = EXT:myExt/Resources/Private/Language/locallang.xlfsomeLabels.selectionPrefix = idPrefixsomeLabels.stripFromSelectionName = strip_mesomeLabels.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

Page 106: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Workspace Preview per TSconfig

Standardmäßig erzeugt TYPO3 lediglich Vorschau-Links für die Tabellentt_content, pages und pages_language_overlayDies 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

Page 107: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 wurdenund in der Datei LocalConfiguration.php gespeichert sind# fuer kleine Retina Bildertt_content.image.20.1.sourceCollection.smallRetina.quality = 80

# fuer groessere Retina Bildertt_content.image.20.1.sourceCollection.largeRetina.quality = 65

TYPO3 CMS 7 LTS - What’s New

Page 108: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Count für Split hinzugefügt

Es wurde eine neue Eigenschaft returnCount zur stdWrap-Funktionsplit hinzugefügt, die die Anzahl der Elemente nach dem Split enthält1 = TEXT1 {

value = x,y,z,1,2,3,a,b,csplit.token = ,split.returnCount = 1

}

# result: 9

TYPO3 CMS 7 LTS - What’s New

Page 109: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Handling von Backend-Layouts vereinfacht (1)

Das Handling, um Backend-Layouts mit Templates für dieFrontend-Ausgabe zu versehen, wurde vereinfacht, indem die Optionpagelayout eingeführt wurdeBeispiel:page.10 = FLUIDTEMPLATEpage.10 {

file.stdWrap.cObject = CASEfile.stdWrap.cObject {

key.data = pagelayoutdefault = TEXTdefault.value = EXT:sitepackage/Resources/Private/Templates/Home.html3 = TEXT3.value = EXT:sitepackage/Resources/Private/Templates/1-col.html4 = TEXT4.value = EXT:sitepackage/Resources/Private/Templates/2-col.html

}}

(Fortsetzung auf nächster Seite)

TYPO3 CMS 7 LTS - What’s New

Page 110: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Handling von Backend-Layouts vereinfacht (2)

pagelayout ersetzt dabei den folgenden Code:field = backend_layoutifEmpty.data = levelfield:-2,backend_layout_next_level,slideifEmpty.ifEmpty = default

TYPO3 CMS 7 LTS - What’s New

Page 111: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Diverse

Für die mit TYPO3 CMS 7.4 eingeführte stdWrap-Funktion bytes kannnun die Basis (z.B. 1000 oder 1024) gesetzt werden:bytes.base = 1000

TYPO3 CMS 7 LTS - What’s New

Page 112: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

Parameter für indexed_search

Einige Parameter für indexed_search, die bisher hart-kodiert waren,können nun konfiguriert werdentitleCropAfter = 50titleCropSignifier = ...summaryCropAfter = 180summaryCropSignifier =hrefInSummaryCropAfter = 60hrefInSummaryCropSignifier = ...markupSW_summaryMax = 300markupSW_postPreLgd = 60markupSW_postPreLgd_offset = 5markupSW_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

Page 113: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 werdenkann

Darüber wird der Pfad für die Breadcrumb bei Suchergebnissenangezeigt

Die Option verfügt über Option-Split und ist standardmäßig auf "/"konfiguriertplugin.tx_indexedsearch.settings.breadcrumbWrap = / || /

TYPO3 CMS 7 LTS - What’s New

Page 114: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TSconfig & TypoScript

no_cache Parameter-Konfiguration für indexed_search

Es wurde eine neuen TypoScript-Option hinzugefügt:forwardSearchWordsInResultLink.no_cacheDamit kann eingestellt werden, ob der no_cache Paramater an dieSeiten-Links innerhalb von indexed_search hinzugefügt wird// Fuer Extbase-Pluginsplugin.tx_indexedsearch.settings.forwardSearchWordsInResultLink.no_cache = 1

// Fuer eingefuegte Pluginsplugin.tx_indexedsearch.forwardSearchWordsInResultLink.no_cache = 1

TYPO3 CMS 7 LTS - What’s New

Page 115: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Sources and Authors

Quellen und Autoren

TYPO3 CMS 7 LTS - What’s New

Page 116: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Sources and Authors

Quellennachweis

TYPO3 News:http://typo3.org/news

Release Infos:https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.xINSTALL.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.githttps://git.typo3.org/Packages/TYPO3.Fluid.git

TYPO3 CMS 7 LTS - What’s New

Page 117: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Sources and Authors

pluswerk

pluswerk ist eine Full Service Agentur für leidenschaftliche digitaleKommunikation 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

Page 118: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TYPO3 CMS 7 LTS - What’s NewExtbase & Fluid

Patrick Lobacher (Vorstand pluswerk AG)http://www.pluswerk.ag

10/November/2015Creative Commons BY-NC-SA 3.0

Page 119: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Introduction

TYPO3 CMS 7 LTS - What’s New

Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig vonder Rolle, können die folgenden Themen ebenfalls interessant sein:

BEUserInterface

TypoScript

In-DepthChanges

Extbase/Fluid

Deprecated/Rem

oved

Sys.Administration

Redakteure XIntegratoren X X XEntwickler X X XSysAdmins X

Download aller What’s New Slides unter typo3.org

TYPO3 CMS 7 LTS - What’s New

Page 120: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Extbase & FluidExtbase und Fluid sind der de facto Standard wenn es um moderneTechnologien im TYPO3 Universum geht. Auch wenn Extbase einige wenigeneue Features spendiert bekommen hat, wurden in TYPO3 CMS 7 LTS diemeisten Änderungen im Bereich Fluid vorgenommen.Einige ViewHelpers wurden aktualisiert, verbessert oder gar neueeingeführt. So gibt es zum Beispiel nun einen MediaViewHelper, der dafürverwendet werden kann, um Video, Audio oder andere Media-Dateien imFrontend zu rendern.Zusätzlich wurde die System Extension form auf Extbase & Fluid portiert.

TYPO3 CMS 7 LTS - What’s New

Page 121: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Template Path Fallback

Sowohl Fluid Standalone View wie auch das TypoScript-ObjektFLUIDTEMPLATE unterstützen nun Fallback Pfadepage.10 = FLUIDTEMPLATEpage.10.file = EXT:myextension/Resources/Private/Templates/Main.htmlpage.10.partialRootPaths {

10 = EXT:myextension/Resources/Private/Partials20 = 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 derFallback-Liste gestellt (Index = 0)

TYPO3 CMS 7 LTS - What’s New

Page 122: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Typolink ViewHelper

Es wurde ein Typolink-ViewHelper zugefügt, der beispielsweise Felderauswerten und darstellen kann, die über einen Link-Wizard im Backenderzeugt 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

Page 123: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Allgemeine data-* Attribut

Alle ViewHelper, die HTML Tags ausgeben, unterstützen nun das HTML5data-* Attribut

Array, welches als data übergeben wird, wird ausgewertet und dessenSchlü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

Page 124: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Class Tag Values via Reflection

Extbase Reflection-Service kann nun Tags bzw. Annotationszurückliefern, die zu einer Klasse zugefügt wurden

Beispiel:/*** @SomeClassAnnotation A value*/

class MyClass {}

Die Annotation kann dann wie folgt ermittelt werden:$service = new \TYPO3\CMS\Extbase\Reflection\ReflectionService();

// 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

Page 125: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

PaginateViewHelper

Der Paginate-ViewHelper unterstützt nun folgende Input-Werte:

QueryResultInterfaceObjectStorageArrayAccessarray

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

Page 126: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

ContainerViewHelper lädt RequireJS Module

Der ContainerViewHelper kann RequireJS-Module viaincludeRequireJsModules 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

Page 127: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Methode has() im ObjectAccess

Für die Benutzung in Fluid, object.property undobject.isProperty unterstützten bereits die folgenden Methoden:

isProperty()getProperty()

Neu in TYPO3 CMS 7.1: hasProperty()Hier wird die Method $object->hasProperty() aufgerufen, wennobject.hasProperty in Fluid benutzt wird

TYPO3 CMS 7 LTS - What’s New

Page 128: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 eineigener TypeConverter erstellt werden muss!

TYPO3 CMS 7 LTS - What’s New

Page 129: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Callouts anstelle von FlashMessages

An einigen Stellen im Backend werden nun Callouts anstelle vonFlashMessages 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.infoboxtitle="Message title"message="your box content"state="-2"iconName="check"disableIcon="TRUE" />

TYPO3 CMS 7 LTS - What’s New

Page 130: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

format.case ViewHelper

Es gibt nun einen format.case ViewHelper, der die Schreibweise vonStrings verändert:

upper: Führt zu "UPPERCASE" (Großbuchstaben)lower: Führt zu "lowercase" (Kleinbuchstaben)capital: Führt zu einem großen Anfangsbuchstabenuncapital: 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

Page 131: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Diverses

Parameter cHash wird nicht mehr an URLs angehängt, die auf eineAction leiten, welche nicht gecached wird oder wenn der Request nichtgecached wird.

TYPO3 CMS 7 LTS - What’s New

Page 132: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

ActionMenuItemGroupViewHelper (1)

Mit diesem neuen ViewHelper können im Backend Optionen-Gruppenfü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

Page 133: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

ActionMenuItemGroupViewHelper (2)

Beispiel auf der vorherigen Slide resultiert in folgender Ausgabe:

TYPO3 CMS 7 LTS - What’s New

Page 134: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 derder 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

Page 135: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Neue Eigenschaften im cObject FLUIDTEMPLATE (1)

Das cObject FLUIDTEMPLATE wurde um die EigenschaftentemplateRootPaths und templateName ergänzt

Man kann nun einen Template-Namen setzen, der zusammen mit demFormat im angegebenen Template-Pfad gesucht wird

templateRootPaths hat die selbe Fallback-Logik wielayoutRootPath und partialRootPath

templateName (string/stdWrap)templateRootPaths (Array mit Datei-Pfaden und "EXT:" Unterstützung)

TYPO3 CMS 7 LTS - What’s New

Page 136: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Neue Eigenschaften im cObject FLUIDTEMPLATE (2)

TypoScript Beispiel:lib.stdContent = FLUIDTEMPLATElib.stdContent {

templateName = TEXTtemplateName.stdWrap {

cObject = TEXTcObject {

data = levelfield:-2,backend_layout_next_level,slideoverride.field = backend_layoutsplit {

token = frontend__1.current = 11.wrap = |

}}ifEmpty = Default

}templateRootPaths {

10 = EXT:frontend/Resources/Private/Templates20 = EXT:sitemodification/Resources/Private/Templates

}}

TYPO3 CMS 7 LTS - What’s New

Page 137: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Entfernung von xmlns-Attributes und des HTML-Tags (1)

Durch die Einführung von xmlns:*-Attributen in Tags ist es einer IDEmö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 inLayouts nicht möglich und zudem nicht intuitiv

Daher wird ein Namespace, sofern dieser den Aufbauhttp://typo3.org/ns/<phpNamespace> hat, automatisch entfernt(alle anderen Namespaces bleiben erhalten)

TYPO3 CMS 7 LTS - What’s New

Page 138: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Entfernung von xmlns-Attributes und des HTML-Tags (2)

Verwendet man im HTML-Tag das Attributdata-namespace-typo3-fluid="true", wird das gesamteHTML-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

Page 139: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Neue Methoden im Fluid-StandaloneView

Der StandaloneView wird mit den MethodensetTemplateRootPaths($templatePaths) undsetTemplate($templateName, $throwException = TRUE)erweitert

Selbe Funktionalität wie im cObject FLUIDTEMPLATEBeispiel (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

Page 140: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 renderndeObjekt (wie page oder tt_content) enthältDer Prozessor muss das InterfaceFluidTemplateDataProcessorInterface implementieren undfolgende Methode enthalten:

function process(array &$data, array $processorConfiguration,array $configuration, StandaloneView $view) {

[...]}

TYPO3 CMS 7 LTS - What’s New

Page 141: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Data Processing für FLUIDTEMPLATE cObject (2)

Beispiel:my_custom_ctype = FLUIDTEMPLATEmy_custom_ctype {

templateRootPaths {10 = EXT:your_extension_key/Resources/Private/Templates

}templateName = CustomNamesettings {

extraParam = 1}dataProcessing {

1 = Vendor\YourExtensionKey\DataProcessing\MyFirstCustomProcessor2 = AnotherVendor\AnotherExtensionKey\DataProcessing\MySecondCustomProcessor2 {

options {myOption = SomeValue

}}

}}

TYPO3 CMS 7 LTS - What’s New

Page 142: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Section-Anker für Pagination Widget

Es ist nun möglich einen Section-Anker im Pagination Widget zuverwenden

Dazu gibt es den Schlüssel section im Attribut configurationIm folgenden Beispiel wird der Anker #archive an jeden Widget-Linkangehä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

Page 143: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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

Page 144: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

dataProcessing bei FLUIDTEMPLATE

Mit TYPO3 CMS 7.3 wurde die Option dataProcessing beimContent-Objekt FLUIDTEMPLATE eingeführt

Hierfür ändert sich das zu implementierende Interface vonFluidTemplateDataProcessorInterface inDataProcessorInterface 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

Page 145: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Severity-Filter für FlashMessages

Bislang konnten nur alle FlashMessages auf einmal ermittelt und/odergelö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

Page 146: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Query-Support für between hinzugefügt

Es wurde between zum Extbase Query Objekt hinzugefügt, welchesprü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 funktioniertauf jedem DBMS

$query->matching($query->between(’uid’, 3, 5)

);

TYPO3 CMS 7 LTS - What’s New

Page 147: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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

Page 148: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 diesfehl, 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

Page 149: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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

Page 150: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

System-Extension form (1)

Die System-Extension form (inkl. Daten-Model, Controller-Logig,Property Validation, Views und Templating) wurde so adaptiert, dassder Extbase/Fluid MVC Stack unterstützt wird

Die Ausgabe basiert nun komplett auf Fluid und kann somitentsprechend angepasst werden. Pro Form-Element gibt es eineigenes Partial, welches nun auch individuell über dieTypoScript-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

Page 151: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 jedenView individuell angepasst werden

TYPO3 CMS 7 LTS - What’s New

Page 152: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Annotation @cli

Eine neue Annotation @cli wurde eingeführt:wird diese beim CommandController verwendet, so kann dieser nur aufder Kommandozeile, aber nicht im Scheduler verwendet werden

TYPO3 CMS 7 LTS - What’s New

Page 153: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

Relationen zu gleichen Tabellen

Es nun möglich ein Domain Model zu verwenden, in der ein Objekt eineRelation zu einem anderen Objekt der selben Klasse hatnamespace \Vendor\Extension\Domain\Model;class A {

/*** @var \Vendor\Extension\Domain\Model\A*/

protected $parent;}

namespace \Vendor\Extension\Domain\Model;class A {

/*** @var \Vendor\Extension\Domain\Model\B*/

protected $x;

/*** @var \Vendor\Extension\Domain\Model\B*/

protected $y;}

TYPO3 CMS 7 LTS - What’s New

Page 154: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

absolute Option für Image-ViewHelper

Der ImageViewhelper und Uri/ImageViewHelper haben nun eine Optionabsolute, 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>

// Ausgabehttp://www.mydomain.com/fileadmin/_processed_/323223424.png

TYPO3 CMS 7 LTS - What’s New

Page 155: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Extbase & Fluid

ViewHelper um Whitespaces in HTML zu entfernen

Es wurde ein ViewHelper spaceless eingeführt, um überflüssigeLeerzeichen 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

Page 156: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 Seitenbaum1: 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

Page 157: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Sources and Authors

Quellen und Autoren

TYPO3 CMS 7 LTS - What’s New

Page 158: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Sources and Authors

Quellennachweis

TYPO3 News:http://typo3.org/news

Release Infos:https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.xINSTALL.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.githttps://git.typo3.org/Packages/TYPO3.Fluid.git

TYPO3 CMS 7 LTS - What’s New

Page 159: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Sources and Authors

pluswerk

pluswerk ist eine Full Service Agentur für leidenschaftliche digitaleKommunikation 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

Page 160: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TYPO3 CMS 7 LTS - What’s NewÄnderungen im System

Patrick Lobacher (Vorstand pluswerk AG)http://www.pluswerk.ag

10/November/2015Creative Commons BY-NC-SA 3.0

Page 161: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Introduction

TYPO3 CMS 7 LTS - What’s New

Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig vonder Rolle, können die folgenden Themen ebenfalls interessant sein:

BEUserInterface

TypoScript

In-DepthChanges

Extbase/Fluid

Deprecated/Rem

oved

Sys.Administration

Redakteure XIntegratoren X X XEntwickler X X XSysAdmins X

Download aller What’s New Slides unter typo3.org

TYPO3 CMS 7 LTS - What’s New

Page 162: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Änderungen im SystemDurch die Überarbeitung aller Komponenten und der Entfernung veralteterTechnologien, ist das Backend von TYPO3 CMS 7 LTS nun deutlich schnellergeworden 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 wurdeaufgeräumt, einige Komponenten in Extbase neu geschrieben und vieleneue Features wurden mit Hilfe von aktuallen Technologien undProgrammier-Paradigmen implementiert.

TYPO3 CMS 7 LTS - What’s New

Page 163: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Integration von jQuery UI 1.11.2

jQuery UI 1.11 unterstützt AMD (Asynchronous Module Definition), mitwelcher JavaScript Dateien erst geladen werden, wenn sie benötigtwerden (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, dienotwendig 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

Page 164: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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:<?phpnamespace ...;

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

Page 165: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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ültigeEmail 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

Page 166: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Einführung einer abstrakten Condition in TypoScript

Es gibt nun eine AbstractCondition, von der eigene Conditions ableitenkönnenclass TestCondition

extends \TYPO3\CMS\Core\Configuration\TypoScript\ConditionMatching\AbstractCondition {

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:[Vendor\Package\TestCondition][Vendor\Package\TestCondition = 7][Vendor\Package\TestCondition = 7, != 6]

Welche Operatoren in der Condition zur Verfügung stehen, wird in derKlasse selbst festgelegt

TYPO3 CMS 7 LTS - What’s New

Page 167: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Signal zur Manipulation des HTML-Tags in IconUtility

Signal für IconUtility zur HTML-Tag Manipulation

dispatch(’TYPO3\\CMS\\Backend\\Utility\\IconUtility’,’buildSpriteHtmlIconTag’,array($tagAttributes, $innerHtml, $tagName)

);

Wird aufgerufen in:

TYPO3\CMS\Backend\Utility\IconUtility\buildSpriteHtmlIconTag

TYPO3 CMS 7 LTS - What’s New

Page 168: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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:TYPO3\CMS\Core\Database\SoftReferenceIndex->findRef_typolinkTYPO3\CMS\Core\Database\SoftReferenceIndex->getTypoLinkParts

TYPO3 CMS 7 LTS - What’s New

Page 169: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Signal Slots für afterPersistObjects

Bislang gab es nur ein Signal, wenn ein Objekt im Repository (Extbase)aktualisiert wurde: afterUpdateDa aber ein Aggregate Root beispielsweise Subobjekte ebenfallspersistiert, 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:TYPO3\CMS\Extbase\Persistence\Generic\Backend->persistObject

TYPO3 CMS 7 LTS - What’s New

Page 170: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Signal Slots für loadBaseTca

Mit diesem Signal kann das gesamte TCA (anstelle von Teilen) gecachtwerden

protected function emitTcaIsBeingBuiltSignal(array $tca) {list($tca) = static::getSignalSlotDispatcher()->dispatch(

__CLASS__,’tcaIsBeingBuilt’,array($tca)

);$GLOBALS[’TCA’] = $tca;

}

Wird audgerufen in:

TYPO3\CMS\Core\Utility\ExtensionManagementUtility\Backend->buildBaseTcaFromSingleFiles

TYPO3 CMS 7 LTS - What’s New

Page 171: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

API um gecachte TCA Änderungen zuzufügen

PHP Dateien in extkey/Configuration/TCA/Overrides/ werdenausgeführt, direkt nachdem der TCA-Cache aufgebaut wurde

Die Dateien dürfen nur Code enthalten, der das TCA manipuliert,wie beispielsweise: addTCAColumns oder addToAllTCATypesSobald Extensions dieses Features verwenden, ist mit einem deutlichenGeschwindigkeitsschub von Backend Requests zu rechnen

TYPO3 CMS 7 LTS - What’s New

Page 172: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Nur-lesender Zugriff auf File Mounts

File Mounts können (wieder) mit nur-lesenden Zugriff konfiguriertwerden ("read-only")

Jenes war bereits in TYPO3 CMS 4.x möglich, wurde aber inTYPO3 CMS 6.x entfernt

Zum Beispiel: Ordner "test" vom storage UID 3 als Mount mit nurlesenden Zugriff in der Dateiliste und dem Element Browser:

options.folderTree.altElementBrowserMountPoints = 3:/test

Falls kein Storage angegeben wird, geht man davon aus, dass sich derOrdner im Default Storage befindet.

TYPO3 CMS 7 LTS - What’s New

Page 173: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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_CONFentfernt

Extension Icons können nun auch im SVG Bildformat vorliegen(ext_icon.svg)Das Senden eines unbekannten eID Identifikators im Request resultiertnun in eine Exception

TYPO3 CMS 7 LTS - What’s New

Page 174: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

TCA: Maximum chars in text element

TCA-Typ text unterstützt nun das HTML5-Attribut maxlength, um diemaximale 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

Page 175: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

New SplFileInfo implementation

Neue Klasse: TYPO3\CMS\Core\Type\File\FileInfoDiese erweitert SplFileInfo, die wiederrum Meta-Informationen vonDateien ermittelt

$fileIdentifier = ’/tmp/foo.html’;$fileInfo = GeneralUtility::makeInstance(

\TYPO3\CMS\Core\Type\File\FileInfo::class,$fileIdentifier

);echo $fileInfo->getMimeType(); // output: text/html

Entwickler können über folgenden Hook auf die Funktionalitätzugreifen:

$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][\TYPO3\CMS\Core\Type\File\FileInfo::class][’mimeTypeGuessers’]

TYPO3 CMS 7 LTS - What’s New

Page 176: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

UserFunc in TCA Display Condition

userFunc displayCondition ermöglicht es auf jeden erdenklichenStatus und jede Condition zu prüfen

Sollte irgendeine Situation nicht mit den existierenden Checksabgefangen werden können, ist es auch möglich, eigene Funktionen zuschreiben (diese müssen lediglich TRUE/FALSE zurückgeben, um dasentsprechende TCA Field sichtbar zu machen oder zu verbergen)

$GLOBALS[’TCA’][’tt_content’][’columns’][’bodytext’][’displayCond’] =’USER:Vendor\\Example\\User\\ElementConditionMatcher->

checkHeaderGiven:any:more:information’;

TYPO3 CMS 7 LTS - What’s New

Page 177: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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’, // contentTYPO3.Severity.warning // severity

);

TYPO3 CMS 7 LTS - What’s New

Page 178: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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

Page 179: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

JavaScript Storage API (1)

Mittels JavaScript kann auf die BE User Konfiguration zugegriffenwerden ($BE_USER->uc, einfache Key-Value Paare)Zusätzlich kann nun auch der HTML5 Standard localStorage verwendetwerden, um Daten (Client-seitig) im Browser des Benutzers zuspeichern und auszulesenZwei neue global TYPO3 Objekte:

top.TYPO3.Storage.Clienttop.TYPO3.Storage.Persistent

Jedes Objekt hat folgende API Methoden:get(key): Daten holenset(key,value): Daten schreibenisset(key): Prüfen, ob key genutzt wirdclear(): Löschen des Speichers

TYPO3 CMS 7 LTS - What’s New

Page 180: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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

Page 181: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Inline Rendering von Checkboxes

Die Konfiguration inline sorgt bei "cols" dafür, dass Checkboxennebeneinander dargestellt werden, um Platz im Backend User Interfacezu 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

Page 182: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Content Object Registration

Es wurde eine neue globale Option eingeführt, um cObjects wie TEXTzu registrieren bzw. zu erweiternEine 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’] =

Vendor\MyExtension\ContentObject\ExampleContentObject::class;

Die registrierte Klasse muss von der folgenden Klasse ableiten:TYPO3\CMS\Frontend\ContentObject\AbstractContentObjectIdealerweise speichert man seine Datei im Verzeichnistypo3conf/myextension/Classes/ContentObject/um für zukünftige Autoload-Funktionen vorbereitet zu sein

TYPO3 CMS 7 LTS - What’s New

Page 183: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Hooks und Signals (1)

Neuer Hook wurde am Ende von PageRepository->init()hinzugefügt, mit dem die Sichtbarkeit von Seiten beeinflusst werdenkann

Der Hook kann wie folgt registriert werden:

$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][\TYPO3\CMS\Frontend\Page\PageRepository::class][’init’]

Die Hook-Klasse muss das folgende Interface implementieren:

\TYPO3\CMS\Frontend\Page\PageRepositoryInitHookInterface

TYPO3 CMS 7 LTS - What’s New

Page 184: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Hooks und Signals (2)

Neuer Hook wurde zu PageLayoutView hinzugefügt, um das Renderingdes 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:

\TYPO3\CMS\Backend\View\PageLayoutViewDrawFooterHookInterface

TYPO3 CMS 7 LTS - What’s New

Page 185: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Hooks und Signals (3)

Es wurde ein Hook als Post-Prozessor zuBackendUtility::countVersionsOfRecordsOnPage hinzugefügt

Dieser wird z.B. verwendet, um Workspace-Zustände im Seitenbaum zuvisualisieren

Der Hook kann wie folgt registriert werden:

$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’t3lib/class.t3lib_befunc.php’][’countVersionsOfRecordsOnPage’][] =’My\Package\HookClass->hookMethod’;

TYPO3 CMS 7 LTS - What’s New

Page 186: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Hooks und Signals (4)

Neues Signal wurde am Ende der MethodeDataPreprocessor::fetchRecord() hinzugefügt

Jenes kann dazu verwendet werden, um das ArrayregTableItems_data zu manipulieren, damit die manipuliertenDaten in TCEForms angezeigt werden können

$this->getSignalSlotDispatcher()->dispatch(\TYPO3\CMS\Backend\Form\DataPreprocessor::class,’fetchRecordPostProcessing’,array($this)

);

TYPO3 CMS 7 LTS - What’s New

Page 187: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Hooks und Signals (5)

Neues Signal wurde eingeführt, um zusätzlichen Code bei derRegistrierung des Mailer-Objekts auszuführen (z.B. Swift Mailer Plugins)$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(

\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class);

$signalSlotDispatcher->connect(\TYPO3\CMS\Core\Mail\Mailer::class,’postInitializeMailer’,\Vendor\Package\Slots\MailerSlot::class,’registerPlugin’

);

TYPO3 CMS 7 LTS - What’s New

Page 188: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Multiple UID in PageRepository::getMenu()

Methode PageRepository::getMenu() kann nun auch ein Arrayaufnehmen, um meherer Root-Seiten zu definieren

$pageRepository = new \TYPO3\CMS\Frontend\Page\PageRepository();$pageRepository->init(FALSE);$rows = $pageRepository->getMenu(array(2, 3));

TYPO3 CMS 7 LTS - What’s New

Page 189: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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 Datensatzsys_file_processedfile gespeichert(außer, das Bild wird - z.B. durch Cropping - weiterverarbeitet).

Zudem wurde ein zusätzlicher Fallback eingebaut, fallsImageMagick/GraphicsMagick nicht in der Lage sein sollte, dieDimensionen 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

Page 190: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Erweiterung der FAL-Treiber

Um die Performance der Dateiliste bei (Remote-)Storages innerhalbvon FAL zu erhöhen, ist es notwendig, die Sortierung und das Ermittelnder Anzahl direkt im Treiber zu erledigen. Dafür wurden zwei neueParameter 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

Page 191: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Backend Routing API (1)

Der Core enthält nun eine Backend Routing API, welche die Entry Pointsins Backend verwaltet

Die Routing API wurde vom Symfony Routing Framework inspiriert undist 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 Optionenclass Router: API, um die Route zu matchenclass UrlGenerator: generiert die URL

TYPO3 CMS 7 LTS - What’s New

Page 192: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Backend Routing API (2)

Routen werden dabei in folgender Datei in der entsprechendenExtension 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

Page 193: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Neue Systemextension für Media Inhaltselemente

Neue Systemextension "mediace" enthält folgende cObjects:MULTIMEDIAMEDIASWFOBJECTFLOWPLAYERQTOBJECT

Die Inhaltselemente media und multimedia wurden ebenfalls in dieSystemextension verschoben, ebenso der "Media Wizard Provider"

Die Extension ist standardmäßig nicht installiert!

TYPO3 CMS 7 LTS - What’s New

Page 194: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Fremd-Bibliotheken an neuer Stelle

Sämtliche Fremd-Bibliotheken werden nicht mehr inPackages/Libraries, sondern in typo3/contrib/vendorabgelegt

Grundsätzlich ist dafür die Installation der Bibliotheken mittelscomposer install notwendig

Probleme gibt es beim Upgrade einer Installation, wenn dort phpunitverwendet 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

Page 195: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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

Page 196: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Systeminformationen (1)

Das Dropdown mit Systeminformationen kann über folgenden Sloterweitert werden:$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(

\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class);

$signalSlotDispatcher->connect(\TYPO3\CMS\Backend\Backend\ToolbarItems\SystemInformationToolbarItem::class,’getSystemInformation’,\Vendor\Extension\SystemInformation\Item::class,’getItem’

);

TYPO3 CMS 7 LTS - What’s New

Page 197: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Systeminformationen (2)

Zur Ansprache benötigt man die Klasse Item und dazugehörig dieMethode getItem() innerhalb einer ExtensionEXT:extension\Classes\SystemInformation\Item.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’ => \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon(

’extensions-example-information-icon’)));

}}

TYPO3 CMS 7 LTS - What’s New

Page 198: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Systeminformationen (3)

Das Icon extensions-example-information-icon wird in derDatei ext_localconf.php registriert:\TYPO3\CMS\Backend\Sprite\SpriteManager::addSingleIcons(

array(’information-icon’ => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath(

$_EXTKEY) . ’Resources/Public/Images/Icons/information-icon.png’),

$_EXTKEY);

TYPO3 CMS 7 LTS - What’s New

Page 199: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Systeminformationen (4)

Nachrichten werden am unteren Ende des Dropdowns angezeigt

Über den folgenden Slot können eigene Nachrichten eingebrachtwerden:$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(

\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class);

$signalSlotDispatcher->connect(\TYPO3\CMS\Backend\Backend\ToolbarItems\SystemInformationToolbarItem::class,’loadMessages’,\Vendor\Extension\SystemInformation\Message::class,’getMessage’

);

TYPO3 CMS 7 LTS - What’s New

Page 200: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Systeminformationen (5)

Zur Ansprache benötigt man die Klasse Message und dazugehörig dieMethode getMessage() innerhalb einer ExtensionEXT:extension\Classes\SystemInformation\Message.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

Page 201: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Einstellungen für Bild-Manipulation (1)

Folgende Einstellungen können über TypoScript getätigt werden:

# Cropping fuer alle Bilder deaktivierentt_content.image.20.1.file.crop =

# Ueberschreiben/Setzen der Cropping Eigenschaften# offsetX,offsetY,width,heighttt_content.image.20.1.file.crop = 50,50,100,100

TYPO3 CMS 7 LTS - What’s New

Page 202: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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

Page 203: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Einstellungen für Bild-Manipulation (3)

Im TCA wird das Image-Cropping wie folgt zur Verfügung gestellt:

Column Type: image_manipulationConfig 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

Page 204: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Zusätzliche Parameter für HTMLparser userFunc

Die userFunc im HTMLparser kann nun zusätzliche Parameteraufnehmen:myobj = TEXTmyobj.value = <a href="/" class="myclass">MyText</a>myobj.HTMLparser.tags.a.fixAttrib.class {

userFunc = Tx\MyExt\Myclass->htmlUserFuncuserFunc.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

Page 205: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Locking API (1)

Es wurde eine neue Locking-API eingeführt, welche verschiedeneLocking-Methoden (SimpleFile, Semaphore, ...) zur Verfügung stellt

Eine Locking-Methode muss dabei das LockingStrategyInterfaceimplementieren

$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

Page 206: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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

Page 207: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Signal nach Installation von Extensions

In der Methode\TYPO3\CMS\Extensionmanager\Utility\InstallUtility::install()wurde ein Signal eingebaut, welches emmitiert wird, sobald eineExtension fertig installiert ist und alle Imports/Updates durchgelaufensind// Aufruf$this->emitAfterExtensionInstallSignal($extensionKey);

// Methodeprotected function emitAfterExtensionInstallSignal($extensionKey) {

$this->signalSlotDispatcher->dispatch(__CLASS__,’afterExtensionInstall’,array($extensionKey, $this)

);}

TYPO3 CMS 7 LTS - What’s New

Page 208: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Registry für Text-Extraktoren

Der Core enthält nun eine Registry um Text-Extraktoren anzumeldenDabei prüft canExtractText() ob eine Extrahierung möglich ist undextractText() führt diese durchDie Registrierung erfolgt in ext_localconf.php:$textExtractorRegistry = \TYPO3\CMS\Core\Resource\TextExtraction\TextExtractorRegistry::

getInstance();$textExtractorRegistry->registerTextExtractor(

\TYPO3\CMS\Core\Resource\TextExtraction\PlainTextExtractor::class);

Die Verwendung erfolgt folgendermaßen:$textExtractorRegistry = \TYPO3\CMS\Core\Resource\TextExtraction\TextExtractorRegistry::

getInstance();$extractor = $textExtractorRegistry->getTextExtractor($file);if($extractor !== NULL) {

$content = $extractor->extractText($file);}

TYPO3 CMS 7 LTS - What’s New

Page 209: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Diverses

Alle Web-Bibliotheken (wie z.B. Twitter Bootstrap, jQuery, FontAwesome usw.) verwenden nun "Bower" (http://bower.io) zurInstallation, und sind nicht mehr im TYPO3 Core Git enthaltenbower install führt eine Installation durchbower 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 derOption -s wieder gestoppt werden

Der "Processing" Ordner eines Storages kann nun auch außerhalb vondiesem liegen (z.B. bei read-only Storages)

Man kann nun auf die ID der ursprünglich angefragten Seite über dasTSFE zugreifen: $TSFE->getRequestedId()

TYPO3 CMS 7 LTS - What’s New

Page 210: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Symfony/Console im CommandController (1)

Der CommandController verwendet nun intern Symfony/Console und stelltdamit verschiedene Methoden zur Verfügung:

TableHelperoutputTable($rows, $headers = NULL)

DialogHelperselect($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

Page 211: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Symfony/Console im CommandController (2)

ProgressHelperprogressStart($max = NULL)progressSet($current)progressAdvance($step = 1)progressFinish()

(siehe Code-Beispiel auf den folgenden Slides)

TYPO3 CMS 7 LTS - What’s New

Page 212: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Symfony/Console im CommandController (3)

<?phpnamespace Acme\Demo\Command;use TYPO3\CMS\Extbase\Mvc\Controller\CommandController;

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

Page 213: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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

Page 214: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Backend Login API (1)

Das Backend-Login wurde nun komplett als API realisiert und lässt sichdamit selbst per Programmierung ansprechen

Grundsätzlich muss man dazu einen sogenannten Login-Provider in derDatei ext_localconf.php registrieren:$GLOBALS[’TYPO3_CONF_VARS’][’EXTCONF’][’backend’][’loginProviders’][1433416020] = [

’provider’ => \TYPO3\CMS\Backend\LoginProvider\UsernamePasswordLoginProvider::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

Page 215: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Backend Login API (2)

Die Optionen sind wie folgt definiert:

provider:Name der Login-Provider Klasse, die das InterfaceTYPO3\CMS\Backend\LoginProvider\LoginProviderInterfaceimplementiertsorting:Sortierung, der die Reihenfolge der Links zum Login-Provider festlegticon-class:Font-Awesome Icon-Name für den Link auf dem Login-Screenlabel:Label für den Link auf dem Login-Screen

TYPO3 CMS 7 LTS - What’s New

Page 216: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Backend Login API (3)

Das LoginProviderInterface enthält lediglich die Methodepublic function render(StandaloneView $view, PageRenderer$pageRenderer, LoginController $loginController);

Die Parameter sind wie folgt definiert:$view:Der Fluid-StandaloneView, welcher den Login-Screen rendert. Hier mussdas Template-File gesetzt und die Variablen übergeben werden, die manbenötigt.$pageRenderer:PageRenderer-Instanz, welche z.B. JavaScript-Ressourcen einbringenkann.$loginController:Instanz des Login-Controllers.

TYPO3 CMS 7 LTS - What’s New

Page 217: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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

Page 218: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

CategoryRegistry mit neue Optionen

Die Methode CategoryRegistry->addTcaColumn hat Optionenerhalten, um sowohl l10n_mode als auch l10n_display zu setzen:\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::makeCategorizable(

$extensionKey,$tableName,’categories’,array(

’l10n_mode’ => ’string (keyword)’,’l10n_display’ => ’list of keywords’

));

TYPO3 CMS 7 LTS - What’s New

Page 219: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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:\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addModule(

’web’,’layout’,’top’,\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::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

Page 220: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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’ => \MyVendor\MyExtension\Form\Element\T3editorElement::class

);

Dies registriert eine neue Klasse, die den TCA-Type input rendert unddas 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

Page 221: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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’ => \MyVendor\MyExtension\Form\Element\ShowTextAs3dCloudElement::class

);

TYPO3 CMS 7 LTS - What’s New

Page 222: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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-Versionansprechen:$signalSlotDispatcher->connect(

version_compare(TYPO3_version, ’7.0’, ’<’)? ’TYPO3\\CMS\\Lang\\Service\\UpdateTranslationService’: ’TYPO3\\CMS\\Lang\\Service\\TranslationService’,

’postProcessMirrorUrl’,’Vendor\\Extension\\Slots\\CustomMirror’,’postProcessMirrorUrl’

);

TYPO3 CMS 7 LTS - What’s New

Page 223: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Driver Interface

Zum DriverInterface wurden die folgenden Methoden hinzugefügt:getFolderInFoldergetFileInFolder

Jeder eigene FAL-Driver muss daher diese beiden Methodennachimplementieren:

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

Page 224: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Unterstützung von IEC/SI-Keywords für Größen

Die Formatierung von Größen unterstützt nun zwei Keywords, um dieEinheiten 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 = iececho GeneralUtility::formatSize(85123);// => Vorher "83.1 K"// => Nachher "83.13 Ki"

TYPO3 CMS 7 LTS - What’s New

Page 225: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Dependency Ordering Service (1)

Oftmals ist es notwendig eine sortierte Liste an Items zur Verfügung zustellen, deren Einträge einerseits Abhängigkeiten haben undandererseits dazu verwendet werden, um Aktionen in eben dieserReihenfolge 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 nunden DependencyOrderingService zur Verfügung

TYPO3 CMS 7 LTS - What’s New

Page 226: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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

Page 227: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Hooks und Signals (1)

Ein neuer Hook wurde am Ende vonInlineRecordContainer::checkAccess hinzugefügt, mit dem derZugriff 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’][] = ’My\\Package\\HookClass->hookMethod’;

TYPO3 CMS 7 LTS - What’s New

Page 228: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Hooks und Signals (2)

Ein neuer Hook wurde am Ende vonAbstractUserAuthentication::checkAuthenticationhinzugefügt, mit dem man fehlgeschlagene Anmeldeversucheverarbeiten kann

Standardmäßig wartet der Prozess 5 Sekunden nachdem eineAnmeldung 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’][] = ’My\\Package\\HookClass->hookMethod’;

TYPO3 CMS 7 LTS - What’s New

Page 229: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Hooks und Signals (3)

Das neue Signal recordMarkedAsMissing wird ausgesendet, wennder FAL Indexer auf einen sys_file Eintrag stößt, dessen Datei imDateisystem aber nicht auffindbar ist. Dabei wird die sys_file UIDübermittelt.

Jenes kann in Extensions verwendet werden, die Dienste rund um dasDatei-Management anbieten (wie beispielsweise Versionierung,Synchronisation, Recovery, usw.)

Das Signal afterMappingSingleRow wird ausgesendet, wann immerder DataMapper ein Objekt erstellt

TYPO3 CMS 7 LTS - What’s New

Page 230: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

HTML in TypoLink-Titeln

Anführungszeichen in TypoLink-Titeln werden nun automatisch"escaped"

Ein eventuell bereits existierendes Escaping wird daher nun falschdargestellt:Aus ’Some &quot;special&quot; title’wird ’Some &amp;quot;special&amp;quot; title’Es wird empfohlen, hier auf Escaping komplett zu verzichten, da sichTYPO3 nun darum kümmert

BREAKING CHANGE!

TYPO3 CMS 7 LTS - What’s New

Page 231: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Diverse Änderungen (1)

Mit Files->replace gibt eine neue Berechtigung für BackendBenutzer, um Dateien im Modul Dateiliste zu ersetzen

Der Dateinamen des Logfiles, welches der FileWriter schreibt, ändertsich wie folgt:

bisher: typo3temp/logs/typo3.logneu: typo3temp/logs/typo3_<hash>.log

(der Wert <hash> berechnet sich aus dem Encryptionkey)

TYPO3 CMS 7 LTS - What’s New

Page 232: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Diverse Änderungen (2)

Die in Hooks verwendeten Klassen müssen ab sofort demAutoloading-Mechanismus folgen

Daher kann die Hook-Definition auch verkürzt werden:$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’tce’][’formevals’]

[\TYPO3\CMS\Saltedpasswords\Evaluation\FrontendEvaluator::class] = ’’;

BREAKING CHANGE!

TYPO3 CMS 7 LTS - What’s New

Page 233: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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 Renderingvon Inhalten verwendet

Dazu müssen die folgenden beiden static-Templates eingebundenwerden:

Content Elements (fluid_styled_content)Content Elements CSS (optional) (fluid_styled_content)

TYPO3 CMS 7 LTS - What’s New

Page 234: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Fluid-basierte Inhaltselemente (2)

Zusätzlich muss das PageTSconfig Template Fluid-based ContentElements fluid_styled_content in den Seiteneigenschafteneingebunden werden, damit der New-Content-Element Wizardentsprechend 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

Page 235: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Fluid-basierte Inhaltselemente (3)

Um eine Installation auf die neue Struktur zu migrieren, kann man wiefolgt vorgehen:

Deinstallieren der Extension css_styled_contentInstallieren der Extension fluid_styled_contentNun ist ein "Upgrade Wizard" im Install Tool verfügbar, der die Migrationder Inhaltselemente text, image und textpic in textmedia,durchführt

TYPO3 CMS 7 LTS - What’s New

Page 236: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

SELECTmmQuery Methode für Datenbank-Zugang

Bislang enthielt die Datenbank-Klasse die Methodeexec_SELECT_mm_query, die die Datenbank-Abfrage direkt ausführteNun wurde die Generierung des Queries (Query-Building) undAusführung getrennt, indem die Methode SELECT_mm_queryhinzugefü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

Page 237: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Scheduler Task zur Datenbank-Optimierung

Es wurde ein Scheduler Task implementiert, der die Datenbank viaMySQL-Kommando OPTIMIZE TABLE optimiert

Optimiert werden können lediglich Tabellen vom TypMyISAM, InnoDB und ARCHIVEDBAL wird nicht unterstützt

TYPO3 CMS 7 LTS - What’s New

Page 238: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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 eingebenwerden. Anschließend wird die Resource wie eine interne Dateiintegriert.

TYPO3 CMS 7 LTS - What’s New

Page 239: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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

Page 240: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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

Page 241: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Online Medien Unterstützung (4)

Für einen eigenen Media-Service benötigt man eineOnlineMediaHelper Klasse, welche dasOnlineMediaHelperInterface implementiert, sowie eineFileRenderer Klasse, die das FileRendererInterface implementiert// Registrierung eines eigenen Online-Video-Services$GLOBALS[’TYPO3_CONF_VARS’][’SYS’][’OnlineMediaHelpers’][’myvideo’] =

\MyCompany\Myextension\Helpers\MyVideoHelper::class;

$rendererRegistry = \TYPO3\CMS\Core\Resource\Rendering\RendererRegistry::getInstance();$rendererRegistry->registerRendererClass(

\MyCompany\Myextension\Rendering\MyVideoRenderer::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

Page 242: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Backend Routing

Es wurde eine neue Routing Komponente zum TYPO3-Backendhinzugefü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.phpreturn [

’myRouteIdentifier’ => [’path’ => ’/document/edit’,’controller’ => Acme\MyExtension\Controller\MyExampleController::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

Page 243: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Autoload Definition in ext_emconf.php

Zusätzlich zur Datei composer.json können nunAutoload-Definitionen in der Datei ext_emconf.php hinterlegtwerden

Das hat den Vorteil, dass nicht die gesamte Extension nach Klassengescannt wird$EM_CONF[$_EXTKEY] = array (

’title’ => ’Extension Skeleton for TYPO3 CMS 7’,...

’autoload’ =>array(

’psr-4’ => array(’Helhum\\ExtScaffold\\’ => ’Classes’

))

);

TYPO3 CMS 7 LTS - What’s New

Page 244: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Neue Icon-Factory (1)

Die Logik, um mit Icons, Größen und Overlays zu arbeiten, wurde in dieneue IconFactory ausgelagert

Es gibt drei "IconProvider": BitmapIconProvider,FontawesomeIconProvider und SvgIconProviderDie Registrierung eines Icons erfolgt folgendermaßen:IconRegistry::registerIcon($identifier, $iconProviderClassName, array $options = array());

TYPO3 CMS 7 LTS - What’s New

Page 245: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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

Page 246: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Neue Icon-Factory (3)

Der Core stellt einen eigenen ViewHelper zur Verfügung, um Iconsanzuzeigen:{namespace core = TYPO3\CMS\Core\ViewHelpers}

<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

Page 247: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Hooks und Signals (1)

Es wurde ein Signal im LinkValidator zugefügt, welches die zusätzlicheVerarbeitung 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 registriertwerden:$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(

\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class);$signalSlotDispatcher->connect(

\TYPO3\CMS\Linkvalidator\LinkAnalyzer::class,’beforeAnalyzeRecord’,\Vendor\Package\Slots\RecordAnalyzerSlot::class,’beforeAnalyzeRecord’

);

TYPO3 CMS 7 LTS - What’s New

Page 248: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

JumpUrl als System-Extension (1)

Die Erzeugung und das Handling von JumpURLs wurde aus derFrontend-Extension entfernt und zur neuen System-Extensionjumpurl verschoben

Hook zur Manipulation von URLs in der Datei ext_localconf.php:$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’urlProcessing’][’urlHandlers’]

[’myext_myidentifier’][’handler’] = \Company\MyExt\MyUrlHandler::class;

// Die Klasse muss das UrlHandlerInterface implementierenclass MyUrlHandler implements \TYPO3\CMS\Frontend\Http\UrlHandlerInterface {

...}

BREAKING CHANGE!

TYPO3 CMS 7 LTS - What’s New

Page 249: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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’] = \Company\MyExt\MyUrlProcessor::class;

// Die Klasse muss das UrlProcessorInterface implementierenclass MyUrlProcessor implements \TYPO3\CMS\Frontend\Http\UrlProcessorInterface {

...}

BREAKING CHANGE!

TYPO3 CMS 7 LTS - What’s New

Page 250: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Kommandozeilenaufruf (CLI)

Sollte es beim Aufruf von typo3/cli_dispatch.phpsh zu Fehlernkommen, 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

Page 251: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Diverse Änderungen (1)

Die Verschieben-Buttons beim TCA-Type group können nun mit derTCA-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:

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::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

Page 252: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Diverse Änderungen (2)

Es gibt nun eine Funktion, um eine Unique-ID zu erzeugen

$uniqueId = \TYPO3\CMS\Core\Utility\StringUtility::getUniqueId(’Prefix’);

Als Plaintext Dateiendung wurde typoscript hinzugefügt

Es gibt nun eine neue Konfigurations-Option, die regelt, welcheDateiendungen 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

Page 253: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Bootstrap für Install Tool(1)

Das Install Tool basiert nun komplett auf Bootstrap: Sowohl für dieInstallation...

TYPO3 CMS 7 LTS - What’s New

Page 254: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Bootstrap für Install Tool(2)

Das Install Tool basiert nun komplett auf Bootstrap: ...wie auch für dieKonfiguration

TYPO3 CMS 7 LTS - What’s New

Page 255: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

CSRF Schutz für eigene Plugins

Frontend Plugins müssen nun selbst für einen CSRF-Schutz sorgen:$formToken = \TYPO3\CMS\Core\FormProtection\FormProtectionFactory::get()->getFormProtection()->

generateToken(’news’, ’edit’, $uid);if (

$dataHasBeenSubmitted&& \TYPO3\CMS\Core\FormProtection\FormProtectionFactory::get()->validateToken(

\TYPO3\CMS\Core\Utility\GeneralUtility::_POST(’formToken’), ’User setup’, ’edit’)) {// alles in Ordnung

}else {

// ungueltiger Token!}

TYPO3 CMS 7 LTS - What’s New

Page 256: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Neue Tabs für LinkBrowser (1)

Mit diesem Feature kann der LinkBrowser um neue Tabs erweitertwerden

Jeder Tab wird über einem sogenannten "LinkHandler" gesteuert,welcher das folgende Interface implementieren muss:\TYPO3\CMS\Recordlist\LinkHandler\LinkHandlerInterface

Die LinkHandler werden über PageTSconfig registriert:file {

handler = TYPO3\\CMS\\Recordlist\\LinkHandler\\FileLinkHandlerlabel = LLL:EXT:lang/locallang_browse_links.xlf:filedisplayAfter = pagescanAfter = pageconfiguration {

customConfig = passed to the handler}

}

TYPO3 CMS 7 LTS - What’s New

Page 257: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Neue Tabs für LinkBrowser (2)

Die Optionen displayBefore und displayAfter geben dieAnzeigeposition der Tabs an

Die Optionen scanBefore und scanAfter regeln die Reihenfolge derAusführung$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’LinkBrowser’][’hooks’][1444048118] = [

’handler’ => \Vendor\Ext\MyClass::class,’before’ => [], // optional’after’ => [] // optional

];

TYPO3 CMS 7 LTS - What’s New

Page 258: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Neue Module Template API (1)

Es wurde eine Module Template API integriert, um die Erstellung derDocHeader 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

Page 259: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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

Page 260: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

PSR-7 Routing für Backend AJAX Requests

Um eine Route für einen AJAX-Request zuzufügen, erstellt man eineDatei Configuration/Backend/AjaxRoutes.php mit folgendemInhalt in der eigenen Extension:return [

// do something’unique_route_name’ => [

’path’ => ’/toolcollection/some-action’,’target’ => \Vendor\Controller\SomeController::class . ’::myAction’,

]];

TYPO3 CMS 7 LTS - What’s New

Page 261: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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 wurdeEs werden die Parameter record, response und authInfo an denHook übermittelt

TYPO3 CMS 7 LTS - What’s New

Page 262: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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 wirdDamit können z.B. zusätzliche Attribute, wie der Nickname vomOpenID-Server angefordert werdenEs werden die Parameter authRequest und authInfo an den Hookübermittelt

TYPO3 CMS 7 LTS - What’s New

Page 263: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Hooks und Signals (1)

Es ist nun möglich, das Verzeichnis, welches vonBackendUserAuthentication::getDefaultUploadFolder()zurückgegeben wird, via Hook zu verändern

Dazu muss folgende Konfiguration in die Datei ext_localconf.phpeingetragen werden:$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’t3lib/class.t3lib_userauthgroup.php’]

[’getDefaultUploadFolder’][] =\Vendor\MyExtension\Hooks\DefaultUploadFolder::class . ’->getDefaultUploadFolder’;

TYPO3 CMS 7 LTS - What’s New

Page 264: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Hooks und Signals (2)

Beispiel:<?phpnamespace Vendor\MyExtension\Hooks;use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;use TYPO3\CMS\Core\Resource\Folder;

/*** 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

Page 265: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Ä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

Page 266: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Änderungen im System

Diverse Änderungen

Der TCA-Typ select muss nun mit einer Option renderType versehenwerden

Folgende Werte sind hierbei zulässig:

’renderType’ => ’selectMultipleSideBySide’,’renderType’ => ’selectCheckBox’,’renderType’ => ’selectSingle’,’renderType’ => ’selectSingleBox’,’renderType’ => ’selectTree’,

TYPO3 CMS 7 LTS - What’s New

Page 267: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Sources and Authors

Quellen und Autoren

TYPO3 CMS 7 LTS - What’s New

Page 268: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Sources and Authors

Quellennachweis

TYPO3 News:http://typo3.org/news

Release Infos:https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.xINSTALL.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.githttps://git.typo3.org/Packages/TYPO3.Fluid.git

TYPO3 CMS 7 LTS - What’s New

Page 269: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Sources and Authors

pluswerk

pluswerk ist eine Full Service Agentur für leidenschaftliche digitaleKommunikation 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

Page 270: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TYPO3 CMS 7 LTS - What’s NewSystem Administration

Patrick Lobacher (Vorstand pluswerk AG)http://www.pluswerk.ag

10/November/2015Creative Commons BY-NC-SA 3.0

Page 271: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Introduction

TYPO3 CMS 7 LTS - What’s New

Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig vonder Rolle, können die folgenden Themen ebenfalls interessant sein:

BEUserInterface

TypoScript

In-DepthChanges

Extbase/Fluid

Deprecated/Rem

oved

Sys.Administration

Redakteure XIntegratoren X X XEntwickler X X XSysAdmins X

Download aller What’s New Slides unter typo3.org

TYPO3 CMS 7 LTS - What’s New

Page 272: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

System Administration

System AdministrationTYPO3 CMS 7 LTS benötigt eine aktuelle Hosting-Umgebung. Die Schritte zurInstallation von TYPO3 CMS 7 LTS sind gerundsätzlich die selben, wie bei derletzten LTS-Version, allerdings sollten System-Administratoren sicherstellen, dass die neuen Systemanforderungen eingehalten werden.Zusätzlich können Administratoren nun Composer verwenden um die TYPO3CMS Sourcen, alle Abhängigkeiten und Extensions zu installieren und zudeployen.

TYPO3 CMS 7 LTS - What’s New

Page 273: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 >= 128Mmax_execution_time >= 240smax_input_vars >= 1500die 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

Page 274: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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/2000Verwendung von mklink unter Windows Vista und Windows 7

TYPO3 CMS 7 LTS - What’s New

Page 275: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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

Page 276: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

System Administration

Upgrade auf TYPO3 CMS 7 LTS

Upgrade ist nur von TYPO3 CMS 6.2 LTS oder einem der 7.x SprintReleases möglichTYPO3 CMS < 6.2 sollte zunächst auf TYPO3 CMS 6.2 LTS aktualisiertwerden

Upgrade Instruktionen:https://wiki.typo3.org/Upgrade#Upgrading_to_7Offizieller TYPO3 Guide "TYPO3 Installation and Upgrading":http://docs.typo3.org/typo3cms/InstallationGuideGenerelles Vorgehen:

Check der minimalen System Requirements (PHP, MySQL, etc.)Untersuchung deprecation_*.log in der alten TYPO3 InstanzAktualisierung aller Extensions auf die neueste VersionDeployment der neuen Sources + Install Tool -> Upgrade WizardUntersuchung des Startup Moduls für Backend Users (optional)

TYPO3 CMS 7 LTS - What’s New

Page 277: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Sources and Authors

Quellen und Autoren

TYPO3 CMS 7 LTS - What’s New

Page 278: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Sources and Authors

Quellennachweis

TYPO3 News:http://typo3.org/news

Release Infos:https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.xINSTALL.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.githttps://git.typo3.org/Packages/TYPO3.Fluid.git

TYPO3 CMS 7 LTS - What’s New

Page 279: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Sources and Authors

pluswerk

pluswerk ist eine Full Service Agentur für leidenschaftliche digitaleKommunikation 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

Page 280: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

TYPO3 CMS 7 LTS - What’s NewDeprecated/Removed Functions

Patrick Lobacher (Vorstand pluswerk AG)http://www.pluswerk.ag

10/November/2015Creative Commons BY-NC-SA 3.0

Page 281: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Introduction

TYPO3 CMS 7 LTS - What’s New

Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig vonder Rolle, können die folgenden Themen ebenfalls interessant sein:

BEUserInterface

TypoScript

In-DepthChanges

Extbase/Fluid

Deprecated/Rem

oved

Sys.Administration

Redakteure XIntegratoren X X XEntwickler X X XSysAdmins X

Download aller What’s New Slides unter typo3.org

TYPO3 CMS 7 LTS - What’s New

Page 282: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Veraltete/Entfernte FunktionenSehr viele TYPO3 CMS Komponenten wurden überprüft und im Einklang mitden entsprechenden Richtlinien entweder als veraltet klassifiziert odergleich 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-artTechnologien profitiert.Einige wenige kaum verwendete Content-Elemente und Funktionen wurdenaus dem Kern erntfernt und in System Extensions ausgelagert.

TYPO3 CMS 7 LTS - What’s New

Page 283: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Kompatibilitäts-Schicht

In TYPO3 CMS 6.2 stellt eine Kompatibilitäts-Schicht sicher, dass auchalte Extensions mit der neuen Codebase funktionierenNachteil: Geschwindigkeitseinbuße (das volle Potential des Systems kannnicht ausgeschöpft werden)

Diese Kompatibilitäts-Schicht wurde in TYPO3 CMS 7.0 entferntAuswirkung: alte Extensions sind möglicherweise nicht mehr lauffähig(z.B. Extensions ohne Namespaces)

Kompatibilität kann aber wieder hergestellt werden, indem die SystemExtension EXT:compatibility6 installiert wird

Diese Extension wird zukünftig im TER verfügbar sein

TYPO3 CMS 7 LTS - What’s New

Page 284: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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

Page 285: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Veraltete JavaScript Funktionen entfernt

In Einklang mit der Deprecation Strategy wurden in TYPO3 CMS 4.7zahlreiche JavaScript Methoden als deprecated markiert und nunentfernt, beispielsweise:\TYPO3\CMS\Backend\Form\FormEngine->getSingleField_typeInput\TYPO3\CMS\Backend\Form\FormEngine->getSingleField_typeText\TYPO3\CMS\Core\Utility\GeneralUtility->quoted_printable\TYPO3\CMS\Core\Utility\GeneralUtility->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

Page 286: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Entfernte Funktionen (1)

TypoScript Option config.uniqueLinkVars wurde entfernt(das ist nun das Standardverhalten in TYPO3 CMS)ViewHelper \TYPO3\CMS\Documentation\ViewHelpers\Link\Actionwurde entfernt (benutze f:be.buttons.icon or f:uri.* stattdessen)PageTSconfig Option mod.web_list.alternateBgColorswurde entferntPropertyMapper wurde entfernt(ebenso die Option rewrittenPropertyMapper = 0)Folgende TypoScript Conditions wurden entfernt:

browserversionsystemuseragent

TYPO3 CMS 7 LTS - What’s New

Page 287: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Entfernte Methoden (1)

Die folgenden Methoden wurden entfernt:

connectDBin der Klasse \TYPO3\CMS\Frontend\Utility\EidUtility

isDisplayConditionin der Klasse \TYPO3\CMS\Form\FormEngine

int_from_verin der Klasse \TYPO3\CMS\Core\Utility\GeneralUtility

getUniqueFieldsin der Klasse \TYPO3\CMS\Core\DataHandling\DataHandler

TYPO3 CMS 7 LTS - What’s New

Page 288: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Entfernte Methoden (2)

Die folgenden Methoden wurden entfernt:

isSafeModeEnabledin der Klasse \TYPO3\CMS\Core\Utility\PhpOptionsUtility

registerSwiftMailerin der Klasse \TYPO3\CMS\Core\Bootstrap

loadTCAin der Klasse \TYPO3\CMS\Core\Utility\GeneralUtility

isLocalconfWritablein der Klasse\TYPO3\CMS\Core\Utility\ExtensionManagementUtility

TYPO3 CMS 7 LTS - What’s New

Page 289: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Entfernte Klassen

Die folgenden Klassen wurden entfernt:

\TYPO3\CMS\Backend\Template\MediumDocumentTemplate

\TYPO3\CMS\Extbase\Service\TypeHandlingService

TYPO3 CMS 7 LTS - What’s New

Page 290: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

$TYPO3_CONF_VARS[SYS][compat_version]

Die Option $TYPO3_CONF_VARS[SYS][compat_version] (gesetztbeim Update im Install Tool wizard) wurde entfernt

Alle Prüfungen gegen GeneralUtility::compat_version werdennun 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

Page 291: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Inline styles of <blockquote> tag

CSS Styled Content rendert <blockquote> über die TypoScript Optionlib.parseFunc_RTEDiese Zeilen wurden ersatzlos entfernt:lib.parseFunc_RTE.externalBlocks.blockquote.callRecursive.tagStdWrap.HTMLparser = 1lib.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 Stylingvon <blockquote> geändert haben

TYPO3 CMS 7 LTS - What’s New

Page 292: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 Fehlererzeugt

TYPO3 CMS 7 LTS - What’s New

Page 293: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Funktion: include_once

Die Funktionalität, um PHP-Dateien mittels include_once innerhalbvon Modul-Funktionen (wie z.B. dem Info-Modul) zu inkludieren, wurdeentfernt

Das gilt für folgende Module:

Web => PageWeb => Page - New Content Element WizardWeb => FunctionsWeb => InfoWeb => TemplateWeb => RecyclerUser => Task CenterSystem => Scheduler

TYPO3 CMS 7 LTS - What’s New

Page 294: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

TypoScript Option: config.meaningfulTempFilePrefix

Früher war es möglich, per TypoScript Teile des Original-Dateinamenszum 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 alsDateinamen)

Diese Option wurde entfernt(Dateinamen im Verzeichnis typo3temp/GB/ enthalten nun denOriginal-Dateinamen automatisch)

TYPO3 CMS 7 LTS - What’s New

Page 295: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Removed files

Die folgenden Dateien wurden entfernt:

typo3/file_edit.phptypo3/file_newfolder.phptypo3/file_rename.phptypo3/file_upload.phptypo3/show_rechis.phptypo3/listframe_loader.php

Deren Funktionalität wurde in Backend Module integriert, z.B.typo3/file_edit.php inBackendUtility::getModuleUrl(’file_edit’);

TYPO3 CMS 7 LTS - What’s New

Page 296: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

ExtJS DateTimePicker

Die ExtJS Komponente Ext.ux.DateTimePicker wurde entfernt undgegen die Twitter Bootstrap Alternative ersetzt (siehe Kapitel "BackendUser Interface")

Das betrifft zum Beispiel die System Extensions EXT:belog undEXT:scheduler

Hinweis: Extensions, die die (als "deprecated" markierte) KomponenteExt.ux.DateTimePicker benötigen, werden mit hoherWahrscheinlichkeit nicht mehr funktionieren.

TYPO3 CMS 7 LTS - What’s New

Page 297: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 undbe_groups besitzen nun die Standardwert "checkbox"Jenes kann in der Datei typo3conf/extTables.php bei Bedarfangepasst 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

Page 298: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Content Element "Mailform"

Die Mailform Funktionalität, die das cObject FORM bereitstellt, wurdevom 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 wurdenentfernt:protected checkDataSubmission()protected sendFormmail()public extractRecipientCopy()public codeString()protected roundTripCryptString()

TYPO3 CMS 7 LTS - What’s New

Page 299: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Funktionalität überarbeitet (1)

Die EXT:indexed_search wird automatisch aktiviert, sobald sieinstalliert wird. Das bedeutet auch, dass die TypoScript Optionenconfig.index_enable und config.index_externals ebenfallsautomatisch aktiviert werden

TSconfig web_func.menu.wiz ändert sich zuweb_func.menu.functions

Extensions, die sich in die Toolbar oben rechts einklinken, müssen dasfolgende neue Interface implementieren:TYPO3\CMS\Backend\Toolbar\ToolbarItemInterfaceund müssen unter folgendem Schlüssel registriert werden:$GLOBALS[’TYPO3_CONF_VARS’][’BE’][’toolbarItems’]

TYPO3 CMS 7 LTS - What’s New

Page 300: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Funktionalität überarbeitet (2)

Die Datei typo3/js/tree.js wurde ersetzt gegenEXT: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/ undtypo3/sysext/t3skin/images/flags/ nachtypo3/sysext/core/Resources/Public/Icons/flags/ verschoben

TYPO3 CMS 7 LTS - What’s New

Page 301: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Funktionalität überarbeitet (3)

CSS Styled Content TypoScript Templates der TYPO3 CMS Versionen4.5 bis 6.1 wurden entfernt

Die folgenden TypoScript cObjects wurden in die Legacy-ExtensionEXT:compatibility6 verschoben:

SEARCHRESULTS COLUMNS OTABLE CLEARGIFIMGTEXT CTABLE HRULER

Das Inhaltselement search wurde in die Legacy-ExtensionEXT:compatibility6 verschoben

Die folgenden TCA-Wizard-Optionen wurden entfernt:

_PADDING _VALIGN _DISTANCE

TYPO3 CMS 7 LTS - What’s New

Page 302: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

TypoScript-Option andWhere

Die TypoScript-Option andWhere wurde als "deprecated" markiert

Integratoren sollten die Eigenschaften where und markersverwenden:

page.30 = CONTENTpage.30 {

table = tt_contentselect {

pidInList = thisorderBy = sortingwhere {

dataWrap = sorting>{field:sorting}}

}}

page.60 = CONTENTpage.60 {

table = tt_contentselect {

pidInList = 73where = header != ###whatever###orderBy = ###sortfield###markers {

whatever.data = GP:firstsortfield.value = sorsortfield.wrap = |ting

}}

}

TYPO3 CMS 7 LTS - What’s New

Page 303: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Entry-Points

Die folgenden Entry-Points wurden als "deprecated" markiert:

typo3/tce_file.phptypo3/move_el.phptypo3/tce_db.phptypo3/login_frameset.phptypo3/sysext/cms/layout/db_new_content_el.phptypo3/sysext/cms/layout/db_layout.php

Stattdessen kann nun folgendes verwendet werden:\TYPO3\CMS\Backend\Utility\BackendUtility::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

Page 304: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Diverses (1)

Die TypoScript-Option config.xhtmlDoctype = xhtml_2wurde als "deprecated" markiertDie folgenden Methoden wurden als "deprecated" markiert:TYPO3\CMS\Backend\Utility\BackendUtility::implodeTSParams()TYPO3\CMS\Backend\Controller::makeLoginBoxImage()

Die folgende Methode wurde als "deprecated" markiert:LocalImageProcessor::getTemporaryImageWithText()

...und ersetzt gegen:TYPO3\CMS\Core\Imaging\GraphicalFunctions::getTemporaryImageWithText()

Die stdWrap Eigenschaften textStyle und tableStylewurde als "deprecated" markiert

TYPO3 CMS 7 LTS - What’s New

Page 305: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Diverses (2)

Die TypoScript-Option page.includeJSlibs wurde umbenannt zupage.includeJSLibs (Großbuchstabe "L") und die alte Option als"deprecated" markiertDie Condition device wurde als "deprecated" markiertDie Methode DocumentTable::table() wurde als "deprecated"markiert (Entwickler sollten dafür Fluid verwenden)Die folgende Methode wurde als "deprecated" markiert:TYPO3\CMS\Frontend\Controller\

TypoScriptFrontendController::doXHTML_cleaning()

...ebenso die dazugehörige TypoScript-Option config.xhtml_cleaningDer folgende Hook wurde als "deprecated" markiert:$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’GLOBAL’][’softRefParser_GL’]

TYPO3 CMS 7 LTS - What’s New

Page 306: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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

Page 307: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Diverses (4)

Die folgenden FormEngine-Methoden wurden als "deprecated"markiert:

FormEngine::insertDefStyleFormEngine::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

Page 308: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Refactoring der FormEngine (1)

Die FormEngine Klassen wurden einem Refactoring unterzogen,welches Auswirkungen auf Eigenschaften und Methoden der Klassenhat

Viele interne Eigenschaften, wie FormEngine->$defaultInputWidthoder FormEngine->$RTEenabled werden ab sofort ignoriert

Die Eigenschaften FormEngine->$allowOverrideMatrix undSuggestElement->class sind ab TYPO3 CMS 7.2 protected

Wenn im TCA type=none gewählt wird, wird nun nicht mehr einFormEngine Objekt, sondern ein NoneElement Objekt zurückgegeben

TYPO3 CMS 7 LTS - What’s New

Page 309: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 dasDeprecationLog analysieren, um herauszufinden, wohin diese Methodenportiert wurden

TYPO3 CMS 7 LTS - What’s New

Page 310: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Refactoring der FormEngine (3)

Die folgenden Methoden wurden umbenannt:

ALT: \TYPO3\CMS\Backend\Form\Element\SuggestElementNEU: \TYPO3\CMS\Backend\Form\Wizard\SuggestWizard

ALT: \TYPO3\CMS\Backend\Form\Element\SuggestDefaultReceiverNEU: \TYPO3\CMS\Backend\Form\Wizard\SuggestWizardDefaultReceiver

ALT: \TYPO3\CMS\Backend\Form\Element\VaueSliderNEU: \TYPO3\CMS\Backend\Form\Wizard\ValueSliderWizard

TYPO3 CMS 7 LTS - What’s New

Page 311: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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:\TYPO3\CMS\Backend\Utility\BackendUtility::getModuleUrl(...)Zum Beispiel:\TYPO3\CMS\Backend\Utility\BackendUtility::getModuleUrl(’logout’)

TYPO3 CMS 7 LTS - What’s New

Page 312: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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()erzeugtDie Möglichkeit, den lokalen Pfad einer FAL-Datei via TypoScript zuermitteln, wurde entfernt(a.value.data = file:current:localPath)Die folgenden tt_content TCA-Felder wurden in die ExtensionEXT:compatibility6 verschoben:

altText

imagecaption

imagecaption_position

image_link

longdescURL

titleText

TYPO3 CMS 7 LTS - What’s New

Page 313: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Diverses (2)

Die Backend-Benutzeranmeldung wurde einem Refactoring unterzogenund das Signal LoginController::SIGNAL_RenderLoginForm entferntAußerdem wurden die folgenden Methoden des LoginControllersentfernt:

LoginController::makeLoginBoxImageLoginController::wrapLoginFormLoginController::makeLoginNewsLoginController::makeLoginFormLoginController::makeLogoutForm

Die Fremd-Bibliothek websvg wurden aus dem TYPO3 CMS Coreentfernt. 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

Page 314: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Diverses (3)

Folgende Schlüssel unter mod.web_info.menu.function wurdenumbenannt (dies hat vor allem Auswirkungen auf PageTSconfig):tx_cms_webinfo_page -> TYPO3\CMS\Frontend\Controller\PageInformationControllertx_cms_webinfo_lang -> TYPO3\CMS\Frontend\Controller\TranslationStatusControllertx_belog_webinfo -> TYPO3\CMS\Belog\Module\BackendLogModuleBootstraptx_infopagetsconfig_webinfo -> TYPO3\CMS\InfoPagetsconfig\Controller\

InfoPageTyposcriptConfigControllertx_linkvalidator_ModFuncReport -> TYPO3\CMS\Linkvalidator\Report\LinkValidatorReport

Der Parameter $returnHTML der Methode\TYPO3\CMS\Core\Utility\DebugUtility::debugRows() wird nichtmehr verwendet und ist daher als deprecated markiert

TYPO3 CMS 7 LTS - What’s New

Page 315: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Diverses (4)

Die Funktion config.prefixLocalAnchors ist deprecated, ebenso wiedie dazugehörigen Methoden im TypoScriptFrontendContoller:prefixLocalAnchorsWithScript() und doLocalAnchorFix()Die Methode $TSFE->checkFileInclude() im globalenFrontendController ist deprecated. Man sollte stattdessen denAutoloader oder $TSFE->tmpl->getFileName() verwenden.Die beiden cObjects COBJ_ARRAY (alias für COA) und CASEFUNC (alias fürCASE) wurden in die Extension EXT:compatibility6 verschoben(und als deprecated markiert) und stehen somit standardmäßig nichtmehr zur Verfügung).Die DataHandler Eigenschaft stripslashes_values wurde alsdeprecated markiert.

TYPO3 CMS 7 LTS - What’s New

Page 316: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Diverses (5)

Der "ThumbnailView", sowie thumbs.php undBackendUtility::getThumbNail() sind ab sofort deprecated undwerden mit TYPO3 CMS Version 8 entfernt(siehe BackendUtility::thumbCode() zur Inspiration).

Im LinkValidator Scheduler Task ändert sich der Namespacemod.tx_linkvalidator zu mod.linkvalidator.

TYPO3 CMS 7 LTS - What’s New

Page 317: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

FormEngine Refactoring

TCA:

Optionen _PADDING, _VALIGN und DISTANCE wurden ausTCA[’aTable’][’columns’][’aField’][’config’][’wizards’]entfernt

Schlüssel TCA[’aTable’][’ctrl’][’mainPalette’] wurde entfernt

TSconfig:

Schlüssel mod.web_layout.tt_content.fieldOrder undTCEFORM.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

Page 318: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 DataMapperund Repository nicht mehr möglich

Anstelle der IdentityMap kann nun die Persistenz "Sessions"verwendet werden:$session = GeneralUtility::makeInstance(ObjectManager::class)->get(

\TYPO3\CMS\Extbase\Persistence\Generic\Session::class);

$session->registerObject($object, $identifier);

if($session->hasIdentifier($identifier)) {$object = $session->getObjectByIdentifier($identifier, $className);

}

TYPO3 CMS 7 LTS - What’s New

Page 319: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Diverses (1)

Datei typo3conf/extTables.php ist "deprecated". Stattdessensollte die folgende Datei verwendet werden:typo3conf/ext/<your_extension>/Configuration/TCA/Overrides/pages.php

Konfiguration $TYPO3_CONF_VARS[GFX][png_to_gif] wurdeentfernt

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 dasspezifizierte Feld in der Datenbank nicht vorhanden ist.

TYPO3 CMS 7 LTS - What’s New

Page 320: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Diverses (2)

DBAL-Option config.classFile wurde entfernt

Optionen iconOnly und styleAttributes des CshViewHelpersind "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 ComposerClassLoaders entfernt

TYPO3 CMS 7 LTS - What’s New

Page 321: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Systemextension cms entfernt (1)

Die Systemextension cms wurde entfernt

Entwickler von Extensions sollten prüfen, ob Abhängigkeit zu cms inder 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 frontendmigriert (daher müssen ggf. Referenzen zu Sprachdateien angepasstwerden, siehe folgende Slide)

TYPO3 CMS 7 LTS - What’s New

Page 322: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Systemextension cms entfernt (2)

Notwendige Anpassungen der Referenzen zu Sprachdateien:ALT: typo3/sysext/cms/web_info/locallang.xlfNEU: typo3/sysext/frontend/Resources/Private/Language/locallang_webinfo.xlf

ALT: typo3/sysext/cms/locallang_ttc.xlfNEU: typo3/sysext/frontend/Resources/Private/Language/locallang_ttc.xlf

ALT: typo3/sysext/cms/locallang_tca.xlfNEU: typo3/sysext/frontend/Resources/Private/Language/locallang_tca.xlf

ALT: typo3/sysext/cms/layout/locallang_db_new_content_el.xlfNEU: typo3/sysext/backend/Resources/Private/Language/locallang_db_new_content_el.xlf

ALT: typo3/sysext/cms/layout/locallang.xlfNEU: typo3/sysext/backend/Resources/Private/Language/locallang_layout.xlf

ALT: typo3/sysext/cms/layout/locallang_mod.xlfNEU: typo3/sysext/backend/Resources/Private/Language/locallang_mod.xlf

ALT: typo3/sysext/cms/locallang_csh_webinfo.xlfNEU: typo3/sysext/frontend/Resources/Private/Language/locallang_csh_webinfo.xlf

ALT: typo3/sysext/cms/locallang_csh_weblayout.xlfNEU: typo3/sysext/frontend/Resources/Private/Language/locallang_csh_weblayout.xlf

TYPO3 CMS 7 LTS - What’s New

Page 323: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

PageRenderer ist veraltet

Die folgenden PageRenderer-Methoden wurden als veraltet deklariert:TYPO3\CMS\Backend\Controller\BackendController::getPageRenderer()TYPO3\CMS\Backend\Template\DocumentTemplate::getPageRenderer()TYPO3\CMS\Backend\Template\FrontendDocumentTemplate::getPageRenderer()TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController::getPageRenderer()

Stattdessen ist nun folgender Code zu verwenden, um eine Instanz desPageRenderers zu erhalten:\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Page\PageRenderer::class)

TYPO3 CMS 7 LTS - What’s New

Page 324: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Veraltete GeneralUtility-Methoden

Die folgenden GeneralUtility-Methoden wurden als veraltetdeklariert 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 \TYPO3\CMS\Core\Localization\LocalizationFactory */$languageFactory = GeneralUtility::makeInstance(

\TYPO3\CMS\Core\Localization\LocalizationFactory::class);$languageFactory->getParsedData($fileToParse, $language, $renderCharset, $errorMode);

TYPO3 CMS 7 LTS - What’s New

Page 325: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

JavaScript Bibliotheken entfernt

Die JavaScript-Bibliotheken prototype.js und scriptaculouswurden entfernt. Somit haben die folgenden TypoScript-Eigenschaftenkeine Funktion mehr:

page.javascriptLibs.Prototypepage.javascriptLibs.Scriptaculous.*

Im ViewHelper be.container liefern die entsprechenden AttributeFehler:

<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

Page 326: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 veraltetmarkiert

Will man eigene Init Entry Points verwenden, so geht dies über denfolgenden Code:

call_user_func(function() {$classLoader = require __DIR__ . ’/vendor/autoload.php’;(new \TYPO3\CMS\Backend\Http\Application($classLoader))->run();

});

Anstelle des Zugriffs auf mod.php verwendet man nun:

BackendUtility::getModuleUrl()

TYPO3 CMS 7 LTS - What’s New

Page 327: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

TCA: Zusätzliche Palette entfernt

Der showitem String des TCA-Schlüssels types sah die Möglichkeitvor, eine zusätzliche Palette zu definieren. Diese wurde nach demHauptfeld gerendertJenes wurde nun entfernt und in die normale Paletten-DefinitionmigriertBisher:’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

Page 328: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Diverse Änderungen (1)

Die Content-Objekte "Text" und "Text mit Bild" hatten bisher eineCheckbox "RTE enabled". Diese wurde, zusammen mit derdazugehörigen TCA-Option flag, entfernt.Die folgenden TypoScript-Optionen zum Einbinden von PHP-Dateienwurden entfernt:

config.includeLibraryconfig.includeLibs

Das Verzeichnis typo3/ext wurden entfernt(nicht aber die Möglichkeit, globale Extensions zu verwenden: das Verzeichniskann manuell angelegt werden)

TYPO3 CMS 7 LTS - What’s New

Page 329: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Diverse Änderungen (2)

ExtCore (ein schlanker ExtJS Adapter) wurde entfernt und damit diefolgenden TypoScript-Optionen:

page.javascriptLibs.ExtCore.*page.javascriptLibs.ExtJs.*

Außerdem die entsprechende Option im<f:be.container>-ViewHelperDie sogenannten "BigButtons" ("Edit Page Properties", "Move Page",...)wurden entfernt und mit ihnen die TSconfig-Einstellungmod.we_layout.disableBigButtons

TYPO3 CMS 7 LTS - What’s New

Page 330: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Diverse Änderungen (3)

Die Konfiguration für das Error- und Exception-Handling kann nunnicht mehr in der Datei ext_localconf.php der Extensionüberschrieben werden, sondern muss in einer der DateienLocalConfiguration.php oder AdditionalConfiguration.phpgesetzt werden.

Das Feld "General Record Storage Page" welches die Storage-PID fürdie Seite aufgenommen hat, wurde entfernt. Stattdessen muss man dieStorage-PID nun per TypoScript (oder FlexForm) setzen.

Die Funktion IconUtility::getIcon() wurde als veraltetgekennzeichnet - stattdessen verwendet manIconUtility::getSpriteIconForRecord()

TYPO3 CMS 7 LTS - What’s New

Page 331: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Slash-Methoden in GeneralUtility

Innerhalb der Klasse GeneralUtility wurden folgende Methoden alsdeprecated deklariert:

GeneralUtility::addSlashesOnArray()GeneralUtility::stripSlashesOnArray()GeneralUtility::slashArray()

TYPO3 CMS 7 LTS - What’s New

Page 332: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

CLI Konstanten und Methoden

Die Logik hinsichtlich Optionen bei CLI-basierten Skripts wurde an denCliRequestHandler übergeben

Daher gilt folgende Methode als deprecated:

BackendUserAuthentication->checkCLIuser()

Folgende Konstanten und globale Parameter sind nun ebenfallsdeprecated:

const TYPO3_cliKeyconst TYPO3_cliInclude$GLOBALS[’MCONF’][’name’]$GLOBALS[’temp_cliScriptPath’]$GLOBALS[’temp_cliKey’]

TYPO3 CMS 7 LTS - What’s New

Page 333: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 deprecatedmarkiert:

mod.wizards.newContentElement.wizardItems.*.elements.*.icon

TYPO3 CMS 7 LTS - What’s New

Page 334: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Veraltete HtmlParser-Methoden

Die Marker-Ersetzungsfunktionalität wurde verschoben voncore/Classes/Html/HtmlParser.phpzur eigenen Klassecore/Classes/Service/MarkerBasedTemplateService.phpDaher sind folgende Methoden deprecated und werden in TYPO3 CMSVersion 8 entfernt:

HtmlParser::getSubpart()HtmlParser::substituteSubpart()HtmlParser::substituteSubpartArray()HtmlParser::substituteMarker()HtmlParser::substituteMarkerArray()HtmlParser::substituteMarkerAndSubpartArrayRecursive()

TYPO3 CMS 7 LTS - What’s New

Page 335: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

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 Eigenschaftlayout nicht mehr verwenden sollte:

10 = FORM10 {

layout {containerWrap = <div><elements /></div>elementWrap = <div><element /></div>

}}

TYPO3 CMS 7 LTS - What’s New

Page 336: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Veraltete ViewHelper und Methoden

Folgende ViewHelper wurden als deprecated markiert und solltendaher nicht mehr verwendet werden:

\TYPO3\CMS\Fluid\ViewHelpers\Be\Buttons\IconViewHelper\TYPO3\CMS\Backend\ViewHelpers\SpriteManagerIconViewHelper

Die folgenden Methoden wurden als deprecated markiert und solltendaher 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

Page 337: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Ajax Routen statt Handler

Ajax Handler, die im Core überExtensionManagementUtility::registerAjaxHandler()registriert wurden, werden nun durch Ajax Routen ersetzt, die inConfiguration/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

Page 338: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Veraltete/Entfernte Funktionen

Verschiedenes

Die Extension mediace wurde entfernt und ist nun im TER zu finden

Die TCA-Option dynamicConfigFile innerhalb des ctrl Abschnittsist deprecated. Das zugehörige TCA wird nun an die StelleConfiguration/TCA/<table_name>.php platziert.

Die jumpurl Funktion wurde aus dem Core komplett entfernt und istnun als Extension im TER zu finden

TYPO3 CMS 7 LTS - What’s New

Page 339: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Sources and Authors

Quellen und Autoren

TYPO3 CMS 7 LTS - What’s New

Page 340: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Sources and Authors

Quellennachweis

TYPO3 News:http://typo3.org/news

Release Infos:https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.xINSTALL.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.githttps://git.typo3.org/Packages/TYPO3.Fluid.git

TYPO3 CMS 7 LTS - What’s New

Page 341: TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

Sources and Authors

pluswerk

pluswerk ist eine Full Service Agentur für leidenschaftliche digitaleKommunikation 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