TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

11.029 Aufrufe

Veröffentlicht am

Heute - am 10.11.2015 ist es soweit. Nach knapp 12 Monaten Entwicklungszeit wurde die neueste TYPO3 CMS Version 7 LTS veröffentlicht. Diese wird nun mindestens 3 Jahre mit Sicherheitspatches und Bugfixes versorgt.

In dieser Version steckt die Entwicklungsleistung von vielen vielen begeisterten TYPO3 Entwicklern - vielen Dank auch von unserer Seite für Eurer Engagement! Ihr rockt!

In die neue Version (die intern als 7.6 bezeichnet wird), sind natürlich sehr viele Neuigkeiten eingeflossen - dokumentiert auf 341 Seiten.

Wie bereits in den letzten 5 Jahren zuvor, haben wir zum Release der neuen TYPO3 CMS Version 7 LTS (Stand 10.11.2015) alle Änderungen und Neuigkeiten recherchiert und auf einer handlichen Präsentation zusammengefasst. Diese kann natürlich von jedem kostenlos heruntergeladen und für alle Zwecke verwendet werden.

Veröffentlicht in: Internet
0 Kommentare
7 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
11.029
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
4.145
Aktionen
Geteilt
0
Downloads
29
Kommentare
0
Gefällt mir
7
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

  1. 1. TYPO3 CMS 7 LTS - What’s New Backend User Interface Patrick Lobacher (Vorstand pluswerk AG) http://www.pluswerk.ag 10/November/2015 Creative Commons BY-NC-SA 3.0
  2. 2. Introduction TYPO3 CMS 7 LTS - What’s New Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig von der Rolle, können die folgenden Themen ebenfalls interessant sein:BEUserInterface TypoScript In-DepthChanges Extbase/Fluid Deprecated/Removed Sys.Administration Redakteure X Integratoren X X X Entwickler X X X SysAdmins X Download aller What’s New Slides unter typo3.org TYPO3 CMS 7 LTS - What’s New
  3. 3. Backend User Interface Backend User Interface Die größte und aufälligste Änderung ist sicher das überarbeitete Backend User Interface. Es basiert nun komplett auf Twitter Bootstrap, verfügt über ein modernes und responsives Design und stellt sicher, das Redakteure ihre Aufgaben effizient und einfach erledigen können. Die neuen Icons sehen nun auf hochauflösenden Screens phantastisch aus, da diese per SVG realisiert wurden. Bilder können nun mit Bordmitteln beim Hochladen ins Backend direkt beschnitten werden. Agenturen können zudem die Login-Seite individualisieren und Redakteure werden zahlreiche weitere tolle Features vorfinden, die ihre tägliche Arbeit erleichtert. TYPO3 CMS 7 LTS - What’s New
  4. 4. Backend User Interface Allgemeines Das Backend User Interface wurde komplett überarbeitet Als Basis dient Twitter Bootstrap Version 3.2.x Sämtliche Icons wurden erneuert und grafisch im "Tile Style" überarbeitet Für Icons wird Font Awesome Version 4.2.x verwendet Linke Funktionenleiste wurde grafisch angepasst Icons wurden im Flat-Design, monochrom, farbig und mit abgerundeten Ecken entworfen Breite der Funktionenleiste kann soweit reduziert werden, dass nur noch Icos sichtbar sind TYPO3 CMS 7 LTS - What’s New
  5. 5. Backend User Interface Look & Feel TYPO3 CMS 7 LTS - What’s New
  6. 6. Backend User Interface Look & Feel TYPO3 CMS 7 LTS - What’s New
  7. 7. Backend User Interface Look & Feel TYPO3 CMS 7 LTS - What’s New
  8. 8. Backend User Interface Backend Benutzeranmeldung TYPO3 CMS 7 LTS - What’s New
  9. 9. Backend User Interface Top Bar (Module Menu) TYPO3 CMS 7 LTS - What’s New
  10. 10. Backend User Interface Listen Modul und Zwischenablage TYPO3 CMS 7 LTS - What’s New
  11. 11. Backend User Interface Tabellen TYPO3 CMS 7 LTS - What’s New
  12. 12. Backend User Interface Suche für Seite/Liste Klick auf die Lupe blendet eine Suche für die aktuelle Seite/Liste ein (diese befand sich früher statisch am Ende der Seite) TYPO3 CMS 7 LTS - What’s New
  13. 13. Backend User Interface Anzahl offene Dokumente Anzahl offene Dokumente wird über ein Bootstrap "Badge" angezeigt (setzt die installierte Extension "Open Documents" voraus) TYPO3 CMS 7 LTS - What’s New
  14. 14. Backend User Interface Flash Messages FlashMessage-Boxen im Backend wurden überarbeitet Dafür wurde der Kontrast von Text und Box erhöht und Links werden besser hervorgehoben TYPO3 CMS < 7.0 TYPO3 CMS >= 7.0 TYPO3 CMS 7 LTS - What’s New
  15. 15. Backend User Interface Video Player in Info Window Ein Videoplayer ermöglicht es, HTML5 Audio- und Video-Dateien im "Info"-Fenster abzuspielen TYPO3 CMS 7 LTS - What’s New
  16. 16. Backend User Interface Look & Feel: Date/Time Picker Date/Time Picker im Backend wurde auf Twitter Bootstrap umgestellt TYPO3 CMS 7 LTS - What’s New
  17. 17. Backend User Interface Look & Feel: Funktionen-Modul Die Funktionen "Seiten sortieren" und "mehrere Seiten erzeugen" sind jetzt unter WEB => Funktionen zu finden (in TYPO3 CMS < 7.1 waren diese unter "WEB => Funktionen => Wizards" zu finden) TYPO3 CMS 7 LTS - What’s New
  18. 18. Backend User Interface Look & Feel: Access-Modul Im Modul WEB => Access kann man Benutzer und/oder Gruppen unverändert lassen, wenn man nur die Berechtigungen ändern möchte TYPO3 CMS 7 LTS - What’s New
  19. 19. Backend User Interface Look & Feel: Icons im List-Modul Icons ("Action Buttons") im List-Modul sind nun in zwei Gruppen angeordnet (primäre Aktionen (lesen, speichern, löschen) zuerst, anschließend die sekundären Icons) TYPO3 CMS 7 LTS - What’s New
  20. 20. Backend User Interface Anpassbares Anmeldeformular In der Systemextension backend kann sowohl ein Hintergrundbild, ein Logo und die Signalfarbe für die Anmeldeformular eingestellt werden: TYPO3 CMS 7 LTS - What’s New
  21. 21. Backend User Interface Bild-Manipulation (Cropping) Für Bilder kann im Backend bei der Verwendung einer Referenz (z.B. in Inhalts-Elementen) ein Ausschnitt ausgewählt werden. Diese Funktion muss allerdings für den Redakteur explizit erlaubt werden ("Exclude Fields"): TYPO3 CMS 7 LTS - What’s New
  22. 22. Backend User Interface Benutzergruppen Die Backend Benutzergruppen können im Modul "Backend Users" verwaltet werden: TYPO3 CMS 7 LTS - What’s New
  23. 23. Backend User Interface Automatische Installationen unterbinden In den Einstellungen des Extension-Managers kann die automatische Installation von Extensions nach dem Download deaktiviert werden: TYPO3 CMS 7 LTS - What’s New
  24. 24. Backend User Interface Verbleibende Anzahl von Zeichen Unterhalb von Textfeldern wird die verbleibende Anzahl der maximal zulässigen Zeichen angezeigt: TYPO3 CMS 7 LTS - What’s New
  25. 25. Backend User Interface Ungespeicherte Änderungen Redakteure erhalten eine Warnung, wenn in einem Editier-Formular der "Schließen"-Button geklickt wird, ohne vorher gespeichert zu haben: TYPO3 CMS 7 LTS - What’s New
  26. 26. Backend User Interface Systeminformationen Eine Kurzübersicht der Systeminformationen kann per Klick neben dem Benutzer-Icon abgerufen werden. Die Informationen in diesem Dialog sind erweitern (siehe Kapitel "Änderungen im System"): TYPO3 CMS 7 LTS - What’s New
  27. 27. Backend User Interface Passwortänderung Zur Änderung des Passwortes müssen Backendbenutzer zuerst ihr aktuelles, altes Passwort eingeben: TYPO3 CMS 7 LTS - What’s New
  28. 28. Backend User Interface Icon für "Show Content from Page" Im Seitenbaum zeigt ein neues Icon an, ob eine Seite Inhalte von einer anderen Seite enthält ("Show Content from Page"): TYPO3 CMS 7 LTS - What’s New
  29. 29. Backend User Interface Extension Update Beim Update einer Extension wird gefragt, auf welche Version aktualisieren werden soll: (es wird nicht mehr generell auf die letzte, verfügbare Version aktualisiert) TYPO3 CMS 7 LTS - What’s New
  30. 30. Backend User Interface Recycler Task Die Systemextension recycler bringt nun einen Scheduler Task mit, mit dem gelöschte Datensätze aus Content-Tabellen vollständig entfernt werden können (inkl. referenzierte Dateien, sofern vorhanden). (max. Alter, ab wann Content gelöscht werden kann, ist konfigurierbar) TYPO3 CMS 7 LTS - What’s New
  31. 31. Backend User Interface Seitentitel im Page- und List-Modul Im Page- und List-Modul kann man den Seitentitel entweder per Doppelklick oder mit Klick auf das Bearbeitungssymbol ändern. TYPO3 CMS 7 LTS - What’s New
  32. 32. Backend User Interface Prozessierte FAL Dateien im Install Tool löschen Das Install Tool enthält nun ein neues Tool (unterhalb von "Clean up"), um prozessierte FAL Dateien (wie z.B. Thumbnails) zu löschen. Das ist insbesondere hilfreich, wenn man grafik-relevante Settings ändern oder wenn man GraphicsMagick/ImageMagick aktualisiert hat und alle Dateien neu generieren will. TYPO3 CMS 7 LTS - What’s New
  33. 33. Backend User Interface Copyright in FAL Meta-Daten In den zusätzlichen FAL Meta-Daten (Extension: filemetadata) gibt es nun ein Feld "Copyright". TYPO3 CMS 7 LTS - What’s New
  34. 34. Backend User Interface Avatare für Backend Benutzer Backend Benutzer können nun Avatare festlegen. Diese werden in den Benutzereinstellungen gepflegt und beispielsweise oben neben dem Anmeldenamen oder in den Benutzerlisten angezeigt. TYPO3 CMS 7 LTS - What’s New
  35. 35. Backend User Interface Dateien ersetzen Es ist nun möglich, Dateien in der FAL Dateiliste zu ersetzen. Hierzu muss die "Erweiterte Ansicht" aktiviert sein. Je nach Bedarf kann der bisherige Dateinamen beibehalten oder der neue verwendet werden. TYPO3 CMS 7 LTS - What’s New
  36. 36. Backend User Interface Onlinestatus anzeigen Im Modul "Backend Benutzer" wird nun angezeigt, ob ein Benutzer momentan online ist. TYPO3 CMS 7 LTS - What’s New
  37. 37. Backend User Interface Zweite Optionspalette entfernt Die Checkbox "Show secondary options (palettes)" sowie die TSconfig options.enableShowPalettes und die zugehörigen TCA-Einstellungen wurden entfernt. Die "Paletten" sind nun immer sichtbar und können nicht mehr ausgeblendet werden. TYPO3 CMS 7 LTS - What’s New
  38. 38. Backend User Interface Beschreibung für Backend Benutzer Backend Benutzer können nun auch eine Beschreibung erhalten. TYPO3 CMS 7 LTS - What’s New
  39. 39. Backend User Interface Beschreibung im Backend anzeigen Über die TCA-Einstellung [’TCA’][’ctrl’][’descriptionColumn’] kann eine Spalte ausgewählt werden (meist description), die eine Beschreibung enthält. Ist diese vorhanden, wird der Inhalt beispielsweise im Listenmodul angezeigt. TYPO3 CMS 7 LTS - What’s New
  40. 40. Backend User Interface Beschreibung für Filemounts Filemounts können ebenfalls eine Beschreibung erhalten. TYPO3 CMS 7 LTS - What’s New
  41. 41. Backend User Interface Überschreiben Dialog beim Upload Sofern bei einem Upload Dateien bereits auf dem Server existieren, werden in einem Dialog mehrere Optionen zur Auswahl angeboten. TYPO3 CMS 7 LTS - What’s New
  42. 42. Backend User Interface Editieren von Inhaltselementen für Nicht-Admins einschränken Inhaltselemente können jetzt für die Bearbeitung durch Nicht-Admins eingeschränkt werden (ähnliche Funktion die es bereits bei Seiten gibt). TYPO3 CMS 7 LTS - What’s New
  43. 43. Backend User Interface Statische TSconfig Dateien (1) In den Seiteneigenschaften können nun statische TSconfig Dateien eingebunden werden. TYPO3 CMS 7 LTS - What’s New
  44. 44. Backend User Interface Statische TSconfig Dateien (2) Die TSconfig Dateien werden wie folgt registriert: TYPO3CMSCoreUtilityExtensionManagementUtility::registerPageTSConfigFile( ’extension_name’, ’Configuration/PageTS/myPageTSconfigFile.txt’, ’My special configuration’ ); TYPO3 CMS 7 LTS - What’s New
  45. 45. Backend User Interface Echte Sprachkopien Es ist nun möglich, "richtige" Kopien von Inhaltselementen in Sprachversionen anzulegen (und nicht nur Referenzen). TYPO3 CMS 7 LTS - What’s New
  46. 46. Backend User Interface Sprachauswahl im Modul "View" Das Modul WEB->View bietet nun eine komfortable Sprachauswahl. (kann durch mod.SHARED.view.disableLanguageSelector = 1 deaktiviert werden) TYPO3 CMS 7 LTS - What’s New
  47. 47. Backend User Interface Inhaltselement textmedia Ein neues Inhaltselement "Text & Media", fasst die bisher bekannten Elemente text, image und textpic zusammen. TYPO3 CMS 7 LTS - What’s New
  48. 48. Backend User Interface YouTube- und Vimeo-Dateien Über das erwähnte Inhaltselement "Text & Media" können auch externe YouTube- und Vimeo-Dateien, sowie lokale Dateien eingefügt werden. TYPO3 CMS 7 LTS - What’s New
  49. 49. Backend User Interface Suche im Filelist Modul Im Modul "Filelist" gibt es eine Suche, die rekursiv durch alle Ordner sucht TYPO3 CMS 7 LTS - What’s New
  50. 50. Backend User Interface Benachrichtigungseinstellungen bei Workspaces (1) Die Benachrichtigungseinstellungen (engl. Notification Settings) innerhalb der Workspaces wurden überarbeitet TYPO3 CMS 7 LTS - What’s New
  51. 51. Backend User Interface Benachrichtigungseinstellungen bei Workspaces (2) Man kann nun sogar für den Stage publish-execute Einstellungen vornehmen TYPO3 CMS 7 LTS - What’s New
  52. 52. Backend User Interface Suche im Dateibrowser Im Popup des Dateibrowser ist nun eine einfache Suche integriert, die rekursiv agiert TYPO3 CMS 7 LTS - What’s New
  53. 53. Sources and Authors Quellen und Autoren TYPO3 CMS 7 LTS - What’s New
  54. 54. Sources and Authors Quellennachweis TYPO3 News: http://typo3.org/news Release Infos: https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.x INSTALL.md and ChangeLog typo3/sysext/core/Documentation/Changelog/* TYPO3 Bug-/Issuetracker: https://forge.typo3.org/projects/typo3cms-core TYPO3 Git Repositories: https://git.typo3.org/Packages/TYPO3.CMS.git https://git.typo3.org/Packages/TYPO3.Fluid.git TYPO3 CMS 7 LTS - What’s New
  55. 55. Sources and Authors pluswerk pluswerk ist eine Full Service Agentur für leidenschaftliche digitale Kommunikation mit 10 Standorten in Deutschland und über 130 Mitarbeitern www.pluswerk.ag | +49 89 130 145 20 | facebook.com/pluswerk TYPO3 CMS 7 LTS - What’s New
  56. 56. TYPO3 CMS 7 LTS - What’s New TSconfig & TypoScript Patrick Lobacher (Vorstand pluswerk AG) http://www.pluswerk.ag 10/November/2015 Creative Commons BY-NC-SA 3.0
  57. 57. Introduction TYPO3 CMS 7 LTS - What’s New Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig von der Rolle, können die folgenden Themen ebenfalls interessant sein:BEUserInterface TypoScript In-DepthChanges Extbase/Fluid Deprecated/Removed Sys.Administration Redakteure X Integratoren X X X Entwickler X X X SysAdmins X Download aller What’s New Slides unter typo3.org TYPO3 CMS 7 LTS - What’s New
  58. 58. TSconfig & TypoScript TSconfig & TypoScript TypoScript wird verwendet, um hierarchische Informationen in einer Struktur zu verwalten um damit die TYPO3 CMS Instanz zu konfigurieren. In TYPO3 CMS 7 LTS wurden viele Eigenschaften und Optionen zugefügt, geändert bzw. auch als veraltet markiert oder entfernt. Open Graph Attribute werden nun out-of-the-box unterstützt und die Integrität von extern gehosteten JavaScript-Dateien kann nun via SRI-Hash überprüft werden, um nur zwei der neuen Features zu nennen. Entfernte TypoScript-Optionen sind in den Slides Deprecated/Removed zu finden. TYPO3 CMS 7 LTS - What’s New
  59. 59. TSconfig & TypoScript TSconfig für Linkvalidator inkludieren TSconfig Konfiguration für den Linkvalidator wird gelesen... entweder aus dem aktiven TSconfig des Backends, oder aus der Konfiguration des Scheduler-Tasks Das folgende TSconfig kann vom Linkchecker ausgelesen werden mod.linkvalidator.mychecker.myvar = 1 Dort steht das TSconfig dann als $this->tsConfig zur Verfügung TYPO3 CMS 7 LTS - What’s New
  60. 60. TSconfig & TypoScript Links zu deaktivierten Datensätzen im Linkhandler melden Bisher hat der Linkhandler lediglich gewarnt, wenn es Links zu gelöschten oder nicht existierenden Datensätzen gab Über die folgende TSconfig Einstellung kann nun auch eine Warnung aktiviert werden, wenn der Link auf einen deaktivierten Datensatz zeigt: mod.linkvalidator.linkhandler.reportHiddenRecords = 1 TYPO3 CMS 7 LTS - What’s New
  61. 61. TSconfig & TypoScript RTE: mehrere CSS Klassen Um das Handling mit komplexen CSS Frameworks wie Twitter Bootstrap zu handhaben, muss es möglich sein, mehrere Klassen an ein Element zu vergeben Mit diesem neuen Feature muss der Autor nur noch einen Style auswählen, um dies zu erreichen, und nicht mehrere RTE.classes.[ *classname* ] { .requires = list of CSS classes } TYPO3 CMS 7 LTS - What’s New
  62. 62. TSconfig & TypoScript RTE: nicht-selektierbare Klassen Man kann nun Klassen als "nicht-selektierbar" im Style-Selektor des RTE konfigurieren // der Wert "1" bedeutet, class ist auswaehlbar // der Wert "0" bedeutet, class ist nicht auswaehlbar RTE.classes.[ *classname* ] { .selectable = 1 } TYPO3 CMS 7 LTS - What’s New
  63. 63. TSconfig & TypoScript RTE: mehrere CSS-Dateien einbinden Man kann nun mehrere CSS-Dateien in den RTE laden RTE.default.contentCSS { file1 = fileadmin/rte_stylesheet1.css file2 = fileadmin/rte_stylesheet2.css } Gibt man keine CSS Datei an, so wird die Default-Datei geladen: typo3/sysext/rtehtmlarea/res/contentcss/default.css TYPO3 CMS 7 LTS - What’s New
  64. 64. TSconfig & TypoScript Exception während Rendering erzeugen - Teil 1 Sobald Fehler im Rendering von einzelnen Inhaltselementen (Content Objects) (z.B. mittels USER) auftreten, wird eine Fehlermeldung erzeugt, die in TYPO3 CMS < 7.0 die gesamte Ausgabe zerstört In TYPO3 CMS 7.0 wurde ein Exception-Handling eingeführt, welches eine Fehlermeldung in die Ausgabe an der Stelle integriert, an der das Rendering stattgefunden hat TYPO3 CMS 7 LTS - What’s New
  65. 65. TSconfig & TypoScript Exception während Rendering erzeugen - Teil 2 # default exception handler (activated in context "production") config.contentObjectExceptionHandler = 1 # configuration of a class for the exception handling config.contentObjectExceptionHandler = TYPO3CMSFrontendContentObjectExceptionProductionExceptionHandler # customised error message (show random error code) config.contentObjectExceptionHandler.errorMessage = Oops an error occurred. Code: %s # configuration of exception codes, which are not dealt with tt_content.login.20.exceptionHandler.ignoreCodes.10 = 1414512813 # deactivation of exception handling for a specific plugins or content objects tt_content.login.20.exceptionHandler = 0 # ignoreCodes and errorMessage can be configured globally... config.contentObjectExceptionHandler.errorMessage = Oops an error occurred. Code: %s config.contentObjectExceptionHandler.ignoreCodes.10 = 1414512813 # ...or locally for individual content objects tt_content.login.20.exceptionHandler.errorMessage = Oops an error occurred. Code: %s tt_content.login.20.exceptionHandler.ignoreCodes.10 = 1414512813 TYPO3 CMS 7 LTS - What’s New
  66. 66. TSconfig & TypoScript StdWrap für page.headTag TypoScript Option page.headTag hat nun stdWrap-Funktionalität page = PAGE page.headTag = <head> page.headTag.override = <head class="special"> page.headTag.override.if { isInList.field = uid value = 24 } TYPO3 CMS 7 LTS - What’s New
  67. 67. TSconfig & TypoScript JavaScript-Dateien asynchron laden JavaScript-Dateien könen nun asynchron geladen werden page { includeJS { jsFile = /path/to/file.js jsFile.async = 1 } } Das gilt für: includeJSlibs / includeJSLibs includeJSFooterlibs includeJS includeJSFooter TYPO3 CMS 7 LTS - What’s New
  68. 68. TSconfig & TypoScript HMENU Eigenschaft mit additionalWhere TypoScript cObject HMENU erhält eine neue Eigenschaft additionalWhere Jenes erlaubt eine spezifischere DB Abfrage (z.B. Filterung) Beispiel: lib.authormenu = HMENU lib.authormenu.1 = TMENU lib.authormenu.1.additionalWhere = AND author!="" TYPO3 CMS 7 LTS - What’s New
  69. 69. TSconfig & TypoScript Zusätzliche Eigenschaften für HMENU Browse-Menü Zwei neue Eigenschaften für das cObject HMENU (Option "special=browse"), um detaillierter definieren zu können, welche Seiten im Menü erscheinen sollen: excludeNoSearchPages includeNotInMenu Beispiel: lib.browsemenu = HMENU lib.browsemenu.special = browse lib.browsemenu.special.excludeNoSearchPages = 1 lib.browsemenu.includeNotInMenu = 1 TYPO3 CMS 7 LTS - What’s New
  70. 70. TSconfig & TypoScript Mehrere HTTP-Header HTTP Header können nun mittels config.additionalHeaders als Array gesetzt werden Das ermöglicht es, mehreren Header-Zeilen auf einmal zu konfigurieren config.additionalHeaders { 10 { # header string header = WWW-Authenticate: Negotiate # (optional) replace previous headers with the same name (default: 1) replace = 0 # (optional) force HTTP response code httpResponseCode = 401 } # set second additional HTTP header 20.header = Cache-control: Private } TYPO3 CMS 7 LTS - What’s New
  71. 71. TSconfig & TypoScript Option "auto" für config.absRefPrefix TypoScript Konfiguration config.absRefPrefix kann verwendet werden, um der URL einen Prefix bei relativen Pfaden zu geben. Als Alternative zu config.baseURL (um eine bestimmte Domain zu spezifizieren), erkennt absRefPrefix die Site-Root automatisch: config.absRefPrefix = auto # anstelle von: [ApplicationContext = Production] config.absRefPrefix = / [ApplicationContext = Testing] config.absRefPrefix = /my_site_root/ Hinweis: diese Option ist "Multi-Domain"-sicher und mehrfaches Caching der selben Daten wird verhindern. TYPO3 CMS 7 LTS - What’s New
  72. 72. TSconfig & TypoScript Zwei-Zeichen ISO Code für sys_language (1) Die Behandlung von Sprachen wird durch Einträge in DB Tabelle sys_language vorgenommen, die durch sys_language_uid referenziert werden In TYPO3 CMS 7.1 wurden ISO 639-1 Zwei-Zeichen Codes implementiert: Neues DB Feld: sys_language.language_isocode Neue TypoScript-Option: sys_language_isocode Hinweis: bei ISO 639 handelt es sich um eine Sammlung von Standards der "International Organization for Standardization". Eine List der ISO 639-1 Codes ist hier abrufbar: http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes TYPO3 CMS 7 LTS - What’s New
  73. 73. TSconfig & TypoScript Zwei-Zeichen ISO Code für sys_language (2) Beispiel: # Danish by default config.sys_language_uid = 0 config.sys_language_isocode_default = da [globalVar = GP:L = 1] # ISO code stored in table sys_language (uid 1) config.sys_language_uid = 1 # overwrite ISO code as required config.sys_language_isocode = fr [GLOBAL] page.10 = TEXT page.10.data = TSFE:sys_language_isocode page.10.wrap = <div class="main" data-language="|"> TYPO3 CMS 7 LTS - What’s New
  74. 74. TSconfig & TypoScript Eigene Conditions im Backend Eigene Conditions für das Frontend wurden bereits mit TYPO3 CMS 7.0 eingeführt Seit TYPO3 CMS 7.1 ist es nun auch möglich, eigene Conditions für das Backend zu implementieren Die Condition muss von AbstractCondition ableiten und die Methode matchCondition bereitstellen Anwendungsbeispiel in TypoScript: [BigCompanyNameTypoScriptLovePackageMyCustomTypoScriptCondition] [BigCompanyNameTypoScriptLovePackageMyCustomTypoScriptCondition = 7] [BigCompanyNameTypoScriptLovePackageMyCustomTypoScriptCondition = 7, != 6] [BigCompanyNameTypoScriptLovePackageMyCustomTypoScriptCondition = {$mysite.myconstant}] TYPO3 CMS 7 LTS - What’s New
  75. 75. TSconfig & TypoScript Zufügen von Icons in TCEFORM via PageTSconfig Eigene Werte und Labels von Select-Feldern können bereits mit der PageTSconfig Option addItems vergeben werden Nun können auch Icons für diese Felder definiert werden Option 1: mittels addItems und der Eigenschaft .icon Option 2: mittels altIcons (generell für alle Felder) Beispiel: TCEFORM.pages.doktype.addItems { 10 = My Label 10.icon = EXT:t3skin/icons/gfx/i/pages.gif } TCEFORM.pages.doktype.altIcons { 10 = EXT:myext/icon.gif } TYPO3 CMS 7 LTS - What’s New
  76. 76. TSconfig & TypoScript Element Browser: Mountpoints hinzufügen Neue UserTSconfig Option .append erlaubt es Administratoren Mountpoints hinzuzufügen, anstatt die Liste der konfigurierten DB Mountpoints eines Benutzers neu zu schreiben Beispiel: options.pageTree.altElementBrowserMountPoints = 20,31 options.pageTree.altElementBrowserMountPoints.append = 1 TYPO3 CMS 7 LTS - What’s New
  77. 77. TSconfig & TypoScript Überschreiben der Labels von Radio-Buttons und Checkboxen Labels von Radio-Buttons und Checkboxen können nun überschrieben werden Beispiel: // field with a single checkbox (use ".default") TCEFORM.pages.hidden.altLabels.default = new label TCEFORM.pages.hidden.altLabels.default = LLL:path/to/languagefile.xlf:individualLabel // field with multiple checkboxes (0, 1, 2, 3...) TCEFORM.pages.l18n_cfg.altLabels.0 = new label of first checkbox TCEFORM.pages.l18n_cfg.altLabels.1 = new label of second checkbox TCEFORM.pages.l18n_cfg.altLabels.2 = new label of third checkbox ... TYPO3 CMS 7 LTS - What’s New
  78. 78. TSconfig & TypoScript Diverses (1) Breite und Höhe des Element-Browsers können nun per UserTSconfig festgelegt werden options.popupWindowSize = 400x900 options.RTE.popupWindowSize = 200x200 PageTSconfig: mit einer neue RTE-Konfiguration kann das Standard-Ziel von Links beeinflusst werden buttons.link.[type].properties.target.default Wobei [type] zum Beispiel page, file, url, mail or spec sein kann (Extensions können weitere Typen zur Verfügung stellen) TYPO3 CMS 7 LTS - What’s New
  79. 79. TSconfig & TypoScript Diverses (2) Standardmäßig sind Section-Headlines der Indexed-Search Resultate verlinkt. Das kann nun mittels TypoScript deaktiviert werden plugin.tx_indexedsearch.linkSectionTitles = 0 getData kann jetzt auch field-Daten abfragen (nicht nur Arrays, wie beispielsweise GPVar und TSFE) 10 = TEXT 10.data = field:fieldname|level1|level2 TypoScript Konfiguration config.pageTitle hat jetzt stdWrap-Funktionalität # make value of <title> upper case page = PAGE page.config.pageTitle.case = upper TYPO3 CMS 7 LTS - What’s New
  80. 80. TSconfig & TypoScript Konfigurierbarer Vorschau-Link (1) Es ist nun möglich, die URL zur Vorschau einer Seite zu definieren, die durch den Button "Speichern & Vorschau" aufgerufen wird. Damit kann man unterschiedliche Links für Blog- oder News-Datensätze, aber auch für Inhaltselemente generieren lassen. TCEMAIN.preview { <table name> { previewPageId = 123 useDefaultLanguageRecord = 0 fieldToParameterMap { uid = tx_myext_pi1[showUid] } additionalGetParameters { tx_myext_pi1[special] = HELLO } } } TYPO3 CMS 7 LTS - What’s New
  81. 81. TSconfig & TypoScript Konfigurierbarer Vorschau-Link (2) previewPageId: UID der Seite, die für den Preview verwendet werden soll (ohne Angabe wird die aktuelle Seite verwendet) useDefaultLanguageRecord: definiert, ob übersetzte Datensätze die UID des Default-Datensatzes verwenden (standardmäßig ist jenes aktiviert, default: 1) fieldToParameterMap: Mapping (Key = Value) von Feldern des Datensatzes, die als GET-Parameter an den Link angehängt werden additionalGetParameters: wie fieldToParameterMap, aber für beliebige Paramater TYPO3 CMS 7 LTS - What’s New
  82. 82. TSconfig & TypoScript RTE Konfiguration: Default-Target Das Default-Target in der RTE Konfiguration ist nun im PageTSconfig abhängig vom Typ einstellbar buttons.link.[ type ].properties.target.default = ... Als "type" sind folgende Werte zulässig: (weitere können via Extensions eingebracht werden) page file url mail spec TYPO3 CMS 7 LTS - What’s New
  83. 83. TSconfig & TypoScript Leere HTML-Tags im HTMLparser löschen Es ist nun möglich, leere HTML-Tags im HTMLparser zu löschen stdWrap { // Hier werden alle leeren HTML-Tags entfernt HTMLparser.stripEmptyTags = 1 // Hier werden nur leere h2 und h3 Tags entfernt HTMLparser.stripEmptyTags.tags = h2, h3 } RTE.default.proc.entryHTMLparser_db { stripEmptyTags = 1 stripEmptyTags.tags = p stripEmptyTags.treatNonBreakingSpaceAsEmpty = 1 } Da der HtmlParser unbekannte Tags grundsätzlich entfernt, ist es ratsam, diese zunächst zu behalten: HTMLparser.keepNonMatchedTags = 1 TYPO3 CMS 7 LTS - What’s New
  84. 84. TSconfig & TypoScript Diverses Der Button für "Abkürzung" (engl. abbreviation) im RTE kann nun in der PageTSconfig ausgeblendet werden (da nicht mehr HTML5 konform): # moegliche Wert sind: # acronym, definedAcronym, abbreviation, definedAbbreviation buttons.abbreviation.removeFieldsets = acronym,definedAcronym Die Eigenschaft inlineLanguageLabel des Objekts PAGE kann nun auch mit LLL:-Referenzen umgehen TYPO3 CMS 7 LTS - What’s New
  85. 85. TSconfig & TypoScript stdWrap Funktion strtotime Es gibt nun eine stdWrap Funktion strtotime, welche es ermöglicht, formatierte Datum-Angaben in einen Timestamp umzuwandeln date_as_timestamp = TEXT date_as_timestamp { value = 2015-04-15 strtotime = 1 } next_weekday = TEXT next_weekday { data = GP:selected_date strtotime = + 2 weekdays strftime = %Y-%m-%d } TYPO3 CMS 7 LTS - What’s New
  86. 86. TSconfig & TypoScript GPmerged in Conditions Prüft man in Conditions nur mittels GP so wird beim gleichzeitigen Vorhandensein von POST- und GET-Variablen (z.B. tx_demo_demo[...]=...), lediglich die POST-Variable zurückgegeben Mit der neuen Option GPmerged werden beide Variablen zusammengeführt und dann zurückgegeben [globalVar = GPmerged:tx_demo|foo = 1] page.90 = TEXT page.90.value = DEMO [global] TYPO3 CMS 7 LTS - What’s New
  87. 87. TSconfig & TypoScript Weitere Werte für die Funktion stdWrap.case Die stdWrap Funktion case ist um die beiden Werte uppercamelcase und lowercamelcase ergänzt worden Beispiel: tt_content = CASE tt_content { key.field = CType my_custom_ctype =< lib.userContent my_custom_ctype { file = EXT:site_base/Resources/Private/Templates/SomeOtherTemplate.html settings.extraParam = 1 } default =< lib.userContent default { file = TEXT file.field = CType file.stdWrap.case = uppercamelcase file.wrap = EXT:site_base/Resources/Private/Templates/|.html } } TYPO3 CMS 7 LTS - What’s New
  88. 88. TSconfig & TypoScript Eigenschaft integrity für JavaScript-Dateien (1) Es wurde die Eigenschaft integrity zugefügt, um einen SRI Hash zum JavaScript-Markup hinzuzufügen, mit dem die Quelle verifiziert werden kann (SRI: Sub-Resource Integrity) Dies betrifft die Eigenschaften page.includeJSLibs, page.includeJSFooterlibs, includeJS und includeJSFooter Beispiel: page { includeJS { jQuery = https://code.jquery.com/jquery-1.11.3.min.js jquery.external = 1 jQuery.disableCompression = 1 jQuery.excludeFromConcatenation = 1 jQuery.integrity = sha256-7LkWEzqTdpEfELxcZZlS6wAx5Ff13zZ83lYO2/ujj7g= } } TYPO3 CMS 7 LTS - What’s New
  89. 89. TSconfig & TypoScript Eigenschaft integrity für JavaScript-Dateien (2) SRI ist eine Spezifikation des W3C, die es ermöglicht zu verifizieren, ob extern gehostete Dateien manipuliert worden sind Erstellen von Integrity Hashes: Option 1: https://srihash.org Option 2: durch folgende Kommandos cat FILENAME.js | openssl dgst -sha256 -binary | openssl enc -base64 -A Weitere Informationen: http://www.w3.org/TR/SRI/ TYPO3 CMS 7 LTS - What’s New
  90. 90. TSconfig & TypoScript Data-Provider für Backend Layouts (1) Backend-Layouts können jetzt per PageTSconfig definiert und damit auch in Dateien ausgelagert werden. Zum Beispiel: mod { web_layout { BackendLayouts { exampleKey { title = Example config { backend_layout { colCount = 1 rowCount = 2 rows { 1 { columns { 1 { name = LLL:EXT:frontend/ ... /locallang_ttc.xlf:colPos.I.3 colPos = 3 colspan = 1 } } } [...] TYPO3 CMS 7 LTS - What’s New
  91. 91. TSconfig & TypoScript Data-Provider für Backend Layouts (2) (Fortsetzung) [...] 2 { columns { 1 { name = Main colPos = 0 colspan = 1 } } } } } } icon = EXT:example_extension/Resources/Public/Images/BackendLayouts/default.gif } } } } TYPO3 CMS 7 LTS - What’s New
  92. 92. TSconfig & TypoScript Erweiterung der Option page.meta Die Option page.meta unterstützt nun auch Open Graph Attributnamen page { meta { X-UA-Compatible = IE=edge,chrome=1 X-UA-Compatible.attribute = http-equiv keywords = TYPO3 # <meta property="og:site_name" content="TYPO3" /> og:site_name = TYPO3 og:site_name.attribute = property description = Inspiring people to share og:description = Inspiring people to share og:description.attribute = property og:locale = en_GB og:locale.attribute = property og:locale:alternate { attribute = property value.1 = fr_FR value.2 = de_DE } refresh = 5; url=http://example.com/ refresh.attribute = http-equiv } } TYPO3 CMS 7 LTS - What’s New
  93. 93. TSconfig & TypoScript languageField wird automatisch gesetzt In der TypoScript-Option select (die beispielsweise beim cObject CONTENT verwendet wird) musste man bisher das languageField explizit setzen Jenes wird nun automatisch gesetzt und kann daher weglassen werden config.sys_language_uid = 2 page.10 = CONTENT page.10 { table = tt_content select.where = colPos=0 # Die nachfolgende Zeile ist nicht notwendig: #select.languageField = sys_language_uid renderObj = TEXT renderObj.field = header renderObj.htmlSpecialChars = 1 } TYPO3 CMS 7 LTS - What’s New
  94. 94. TSconfig & TypoScript Individuelles Content Caching Es gibt nun ein individuelles Content Caching, welches im Gegensatz zu stdWrap.cache auch mit COA-Objekten funktioniert (ähnlich dem "Magento Block Caching") page = PAGE page.10 = COA page.10 { cache.key = coaout cache.lifetime = 60 #stdWrap.cache.key = coastdWrap #stdWrap.cache.lifetime = 60 10 = TEXT 10 { cache.key = mycurrenttimestamp cache.lifetime = 60 data = date : U strftime = %H:%M:%S noTrimWrap = |10: | | } [...] [...] 20 = TEXT 20 { data = date : U strftime = %H:%M:%S noTrimWrap = |20: | | } } TYPO3 CMS 7 LTS - What’s New
  95. 95. TSconfig & TypoScript Zähler für listNum Es gibt eine neue Eigenschaft returnCount für die stdWrap Eigenschaft split Damit kann die Anzahl der Elemente in einer kommaseparierten Liste ermittelt werden Das folgende Beispiel gibt 9 zurück: 1 = TEXT 1 { value = x,y,z,1,2,3,a,b,c split.token = , split.returnCount = 1 } TYPO3 CMS 7 LTS - What’s New
  96. 96. TSconfig & TypoScript Sortierung von Tabellen im Backend Über die TSconfig Option mod.web_list.tableDisplayOrder kann eingestellt werden, wie die Tabellen im List-Modul sortiert werden Dafür werden die Schlüsselworte before und after verwendet Anwendung: mod.web_list.tableDisplayOrder { <tableName> { before = <tableA>, <tableB>, ... after = <tableA>, <tableB>, ... } } Zum Beispiel: mod.web_list.tableDisplayOrder { be_users.after = be_groups sys_filemounts.after = be_users pages_language_overlay.before = pages fe_users.after = fe_groups fe_users.before = pages } TYPO3 CMS 7 LTS - What’s New
  97. 97. TSconfig & TypoScript Content Language im HTTP Header Es wird nun standardmäßig Content-language: XX im HTTP Response Header an den Client gesendet, wobei "XX" dem ISO-Code entspricht, der via sys_language_content konfiguriert wurde Dabei kann sys_language_content unterschiedlich zu sys_language_uid sein, wenn der Inhalt von der Fallback-Sprache ermittelt wird (jenes hängt von der Einstellung sys_language_mode ab) Über die Einstellung config.disableLanguageHeader = 1 kann der Header bei Bedarf auch deaktiviert werden TYPO3 CMS 7 LTS - What’s New
  98. 98. TSconfig & TypoScript Rekursive Option für ordner-basierte File Collections Ordner-basierte File Collections haben nun eine Option um rekursiv alle Dateien für einen gegebenen Ordner zu ermitteln Die Option ist ebenfalls für das TypoScript Objekt FILES verfügbar filecollection = FILES filecollection { folders = 1:images/ folders.recursive = 1 renderObj = IMAGE renderObj { file.import.data = file:current:uid } } TYPO3 CMS 7 LTS - What’s New
  99. 99. TSconfig & TypoScript Extension .ts für Static Templates Bislang waren für statische TypoScript Templates nur die folgenden Dateinamen zugelassen: constants.txt setup.txt include_static.txt include_static_files.txt Als Extension kann nun auch .ts verwendet werden Dabei hat .ts Vorrang vor .txt TYPO3 CMS 7 LTS - What’s New
  100. 100. TSconfig & TypoScript save & view Button Der "save & view" Button ist nun via TSconfig konfigurierbar Der folgende Schlüssel nimmt eine kommaseparierte Liste an "doktypes" auf: TCEMAIN.preview.disableButtonForDokType Der Standardwert ist "254, 255, 199" (Storage Folder, Recycler und Menu Seperator) In Foldern und Recycler-Seiten ist der "save & view" Button daher standardmäßig nicht mehr sichtbar TYPO3 CMS 7 LTS - What’s New
  101. 101. TSconfig & TypoScript stdWrap für treatIdAsReference Für das Objekt getImgResource existiert die Option treatIdAsReference, die ggf. definiert, dass die angegebenen UIDs als UIDs von sys_file_reference, anstatt von sys_file gelten Die Option treatIdAsReference besitzt nun stdWrap Funktionalität TYPO3 CMS 7 LTS - What’s New
  102. 102. TSconfig & TypoScript Conditions für TypoScript-Include Der INCLUDE_TYPOSCRIPT Tag besitzt nun das optionale Attribut "condition", welches es ermöglicht, die Datei (oder das Verzeichnis) nur dann zu inkludieren, wenn die Condition erfüllt ist: // TypoScript nur laden, wenn Benutzer eingeloggt ist: <INCLUDE_TYPOSCRIPT: source="FILE:EXT:my_extension/Configuration/TypoScript/feuser.ts" condition="[loginUser = *]"> // TypoScript nur laden, wenn ApplicationContext gesetzt ist: <INCLUDE_TYPOSCRIPT: source="FILE:EXT:my_extension/Configuration/TypoScript/staging.ts" condition="applicationContext = /^Production/Staging/Serverd+$/"> TYPO3 CMS 7 LTS - What’s New
  103. 103. TSconfig & TypoScript TCA-Option, um Datum Feldweise auszublenden Es gibt nun eine TCA-Option disableAgeDisplay, um die Anzeige des Datums auszublenden Voraussetzung hierfür ist, dass der Typ des Feldes input ist, und eval auf date gesetzt ist $GLOBALS[’TCA’][’tt_content’][’columns’][’date’][’config’][’disableAgeDisplay’] = true; TYPO3 CMS 7 LTS - What’s New
  104. 104. TSconfig & TypoScript Inline Sprachlabels mit TypoScript (1) Man kann nun Sprachdateien mittels TypoScript auslesen und als Inline-Array in den Quelltext schreiben, um z.B. per JavaScript darauf zuzugreifen Folgende Optionen sind möglich: selectionPrefix: nur Schlüssel, die mit diesem Prefix anfangen, werden ermittelt stripFromSelectionName: String, der von jedem Schlüssel entfernt wird errorMode: Mode, wenn die Sprachdatei nicht gefunden wird (0: Eintrag im Syslog vornehmen, 1: ignorieren, 3: Exception generieren) TYPO3 CMS 7 LTS - What’s New
  105. 105. TSconfig & TypoScript Inline Sprachlabels mit TypoScript (2) Beispiel: page = PAGE page.inlineLanguageLabelFiles { someLabels = EXT:myExt/Resources/Private/Language/locallang.xlf someLabels.selectionPrefix = idPrefix someLabels.stripFromSelectionName = strip_me someLabels.errorMode = 2 } Ausgabe: <script type="text/javascript"> /*<![CDATA[*/ var TYPO3 = TYPO3 || {}; TYPO3.lang = {"firstLabel":[{"source":"first Label","target":"erstes Label"}], "secondLabel":[{"source":"second Label","target":"zweites Label"}]}; /*]]>*/ </script> TYPO3 CMS 7 LTS - What’s New
  106. 106. TSconfig & TypoScript Workspace Preview per TSconfig Standardmäßig erzeugt TYPO3 lediglich Vorschau-Links für die Tabellen tt_content, pages und pages_language_overlay Dies kann nun per PageTSconfig angepasst werden: # Verwendung der Seite 123 fuer Workspace Preview (fuer alle Tabellen) options.workspaces.previewPageId = 123 # Verwendung des Feldes pid (fuer alle Tabellen) options.workspaces.previewPageId = field:pid # Verwendung der Seite 123 fuer Workspace Preview (fuer die Tabelle tx_myext_table) options.workspaces.previewPageId.tx_myext_table = 123 # Verwendung des Feldes pid fuer Workspace Preview (fuer die Tabelle tx_myext_table) options.workspaces.previewPageId.tx_myext_table = field:pid TYPO3 CMS 7 LTS - What’s New
  107. 107. TSconfig & TypoScript Bildqualität kann per SourceCollection gesetzt werden Die Bildqualität jeder sourceCollection kann nun konfiguriert werden Dies überschreibt die Einstellungen, die im Install Tool gemacht wurden und in der Datei LocalConfiguration.php gespeichert sind # fuer kleine Retina Bilder tt_content.image.20.1.sourceCollection.smallRetina.quality = 80 # fuer groessere Retina Bilder tt_content.image.20.1.sourceCollection.largeRetina.quality = 65 TYPO3 CMS 7 LTS - What’s New
  108. 108. TSconfig & TypoScript Count für Split hinzugefügt Es wurde eine neue Eigenschaft returnCount zur stdWrap-Funktion split hinzugefügt, die die Anzahl der Elemente nach dem Split enthält 1 = TEXT 1 { value = x,y,z,1,2,3,a,b,c split.token = , split.returnCount = 1 } # result: 9 TYPO3 CMS 7 LTS - What’s New
  109. 109. TSconfig & TypoScript Handling von Backend-Layouts vereinfacht (1) Das Handling, um Backend-Layouts mit Templates für die Frontend-Ausgabe zu versehen, wurde vereinfacht, indem die Option pagelayout eingeführt wurde Beispiel: page.10 = FLUIDTEMPLATE page.10 { file.stdWrap.cObject = CASE file.stdWrap.cObject { key.data = pagelayout default = TEXT default.value = EXT:sitepackage/Resources/Private/Templates/Home.html 3 = TEXT 3.value = EXT:sitepackage/Resources/Private/Templates/1-col.html 4 = TEXT 4.value = EXT:sitepackage/Resources/Private/Templates/2-col.html } } (Fortsetzung auf nächster Seite) TYPO3 CMS 7 LTS - What’s New
  110. 110. TSconfig & TypoScript Handling von Backend-Layouts vereinfacht (2) pagelayout ersetzt dabei den folgenden Code: field = backend_layout ifEmpty.data = levelfield:-2,backend_layout_next_level,slide ifEmpty.ifEmpty = default TYPO3 CMS 7 LTS - What’s New
  111. 111. TSconfig & TypoScript Diverse Für die mit TYPO3 CMS 7.4 eingeführte stdWrap-Funktion bytes kann nun die Basis (z.B. 1000 oder 1024) gesetzt werden: bytes.base = 1000 TYPO3 CMS 7 LTS - What’s New
  112. 112. TSconfig & TypoScript Parameter für indexed_search Einige Parameter für indexed_search, die bisher hart-kodiert waren, können nun konfiguriert werden titleCropAfter = 50 titleCropSignifier = ... summaryCropAfter = 180 summaryCropSignifier = hrefInSummaryCropAfter = 60 hrefInSummaryCropSignifier = ... markupSW_summaryMax = 300 markupSW_postPreLgd = 60 markupSW_postPreLgd_offset = 5 markupSW_divider = ... Dabei können folgende Schlüssel angesprochen werden: plugin.tx_indexedsearch.results. plugin.tx_indexedsearch.settings.results. Alle Optionen besitzen außerdem stdWrap-Funktionalität TYPO3 CMS 7 LTS - What’s New
  113. 113. TSconfig & TypoScript Konfiguration des Path-Seperators bei indexed_search Es wurde eine neue TypoScript-Option breadcrumbWrap hinzugefügt, mit dem Path-Seperators bei indexed_search konfiguriert werden kann Darüber wird der Pfad für die Breadcrumb bei Suchergebnissen angezeigt Die Option verfügt über Option-Split und ist standardmäßig auf "/" konfiguriert plugin.tx_indexedsearch.settings.breadcrumbWrap = / || / TYPO3 CMS 7 LTS - What’s New
  114. 114. TSconfig & TypoScript no_cache Parameter-Konfiguration für indexed_search Es wurde eine neuen TypoScript-Option hinzugefügt: forwardSearchWordsInResultLink.no_cache Damit kann eingestellt werden, ob der no_cache Paramater an die Seiten-Links innerhalb von indexed_search hinzugefügt wird // Fuer Extbase-Plugins plugin.tx_indexedsearch.settings.forwardSearchWordsInResultLink.no_cache = 1 // Fuer eingefuegte Plugins plugin.tx_indexedsearch.forwardSearchWordsInResultLink.no_cache = 1 TYPO3 CMS 7 LTS - What’s New
  115. 115. Sources and Authors Quellen und Autoren TYPO3 CMS 7 LTS - What’s New
  116. 116. Sources and Authors Quellennachweis TYPO3 News: http://typo3.org/news Release Infos: https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.x INSTALL.md and ChangeLog typo3/sysext/core/Documentation/Changelog/* TYPO3 Bug-/Issuetracker: https://forge.typo3.org/projects/typo3cms-core TYPO3 Git Repositories: https://git.typo3.org/Packages/TYPO3.CMS.git https://git.typo3.org/Packages/TYPO3.Fluid.git TYPO3 CMS 7 LTS - What’s New
  117. 117. Sources and Authors pluswerk pluswerk ist eine Full Service Agentur für leidenschaftliche digitale Kommunikation mit 10 Standorten in Deutschland und über 130 Mitarbeitern www.pluswerk.ag | +49 89 130 145 20 | facebook.com/pluswerk TYPO3 CMS 7 LTS - What’s New
  118. 118. TYPO3 CMS 7 LTS - What’s New Extbase & Fluid Patrick Lobacher (Vorstand pluswerk AG) http://www.pluswerk.ag 10/November/2015 Creative Commons BY-NC-SA 3.0
  119. 119. Introduction TYPO3 CMS 7 LTS - What’s New Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig von der Rolle, können die folgenden Themen ebenfalls interessant sein:BEUserInterface TypoScript In-DepthChanges Extbase/Fluid Deprecated/Removed Sys.Administration Redakteure X Integratoren X X X Entwickler X X X SysAdmins X Download aller What’s New Slides unter typo3.org TYPO3 CMS 7 LTS - What’s New
  120. 120. Extbase & Fluid Extbase & Fluid Extbase und Fluid sind der de facto Standard wenn es um moderne Technologien im TYPO3 Universum geht. Auch wenn Extbase einige wenige neue Features spendiert bekommen hat, wurden in TYPO3 CMS 7 LTS die meisten Änderungen im Bereich Fluid vorgenommen. Einige ViewHelpers wurden aktualisiert, verbessert oder gar neue eingeführt. So gibt es zum Beispiel nun einen MediaViewHelper, der dafür verwendet werden kann, um Video, Audio oder andere Media-Dateien im Frontend zu rendern. Zusätzlich wurde die System Extension form auf Extbase & Fluid portiert. TYPO3 CMS 7 LTS - What’s New
  121. 121. Extbase & Fluid Template Path Fallback Sowohl Fluid Standalone View wie auch das TypoScript-Objekt FLUIDTEMPLATE unterstützen nun Fallback Pfade page.10 = FLUIDTEMPLATE page.10.file = EXT:myextension/Resources/Private/Templates/Main.html page.10.partialRootPaths { 10 = EXT:myextension/Resources/Private/Partials 20 = EXT:fallback/Resources/Private/Partials } Verwendet man die alten Optionen (z.B. partialRootPath) zusammen mit den neuen, so wird die alte auf die erste Position in der Fallback-Liste gestellt (Index = 0) TYPO3 CMS 7 LTS - What’s New
  122. 122. Extbase & Fluid Typolink ViewHelper Es wurde ein Typolink-ViewHelper zugefügt, der beispielsweise Felder auswerten und darstellen kann, die über einen Link-Wizard im Backend erzeugt wurden <f:link.typolink parameter="{link}" target="_blank" class="ico-class" title="some title" additionalAttributes="{type:’button’}"> link enthält beispielsweise: 42 _blank - "This is the link title" &foo=bar Ausgabe: <a href="index.php?id=42&foo=bar" title="This is the title" target="_blank" class="ico-class" type="button"> Lediglich parameter wird benötigt, der Rest ist optional TYPO3 CMS 7 LTS - What’s New
  123. 123. Extbase & Fluid Allgemeine data-* Attribut Alle ViewHelper, die HTML Tags ausgeben, unterstützen nun das HTML5 data-* Attribut Array, welches als data übergeben wird, wird ausgewertet und dessen Schlüssel-/Werte-Paar ergeben das Attribut: data-key="value" Beispiel: <f:form.textfield data="{foo: ’bar’, baz: ’foos’}" /> Ausgabe: <input data-foo="bar" data-baz="foos" ... /> TYPO3 CMS 7 LTS - What’s New
  124. 124. Extbase & Fluid Class Tag Values via Reflection Extbase Reflection-Service kann nun Tags bzw. Annotations zurückliefern, die zu einer Klasse zugefügt wurden Beispiel: /** * @SomeClassAnnotation A value */ class MyClass { } Die Annotation kann dann wie folgt ermittelt werden: $service = new TYPO3CMSExtbaseReflectionReflectionService(); // Returns all tags and their values the specified class is tagged with $classValues = $service->getClassTagsValues(’MyClass’); // Returns the values of the specified class tag $classValue = $service->getClassTagValue(’MyClass’, ’SomeClassAnnotation’); TYPO3 CMS 7 LTS - What’s New
  125. 125. Extbase & Fluid PaginateViewHelper Der Paginate-ViewHelper unterstützt nun folgende Input-Werte: QueryResultInterface ObjectStorage ArrayAccess array Beispiel: <f:widget.paginate objects="{blogs}" as="paginatedBlogs"> <f:for each="{paginatedBlogs}" as="blog"> <h4>{blog.title}</h4> </f:for> </f:widget.paginate> TYPO3 CMS 7 LTS - What’s New
  126. 126. Extbase & Fluid ContainerViewHelper lädt RequireJS Module Der ContainerViewHelper kann RequireJS-Module via includeRequireJsModules Attribut laden Beispiel: <f:be.container pageTitle="Extension Module" loadJQuery="true" includeRequireJsModules="{ 0:’TYPO3/CMS/Extension/Module1’, 1:’TYPO3/CMS/Extension/Module2’, 2:’TYPO3/CMS/Extension/Module3’, 3:’TYPO3/CMS/Extension/Module4’ }" > TYPO3 CMS 7 LTS - What’s New
  127. 127. Extbase & Fluid Methode has() im ObjectAccess Für die Benutzung in Fluid, object.property und object.isProperty unterstützten bereits die folgenden Methoden: isProperty() getProperty() Neu in TYPO3 CMS 7.1: hasProperty() Hier wird die Method $object->hasProperty() aufgerufen, wenn object.hasProperty in Fluid benutzt wird TYPO3 CMS 7 LTS - What’s New
  128. 128. Extbase & Fluid Hochladen mehrerer Dateien im FormUpload-ViewHelper Der FormUpload-Viewhelper unterstützt das neue Attribut multiple, welches es ermöglicht, mehrere Dateien auf einmal zu übertragen <f:form.upload property="files" multiple="multiple" /> Hinweis: es ist darauf zu achten, dass für das Property-Mapping ein eigener TypeConverter erstellt werden muss! TYPO3 CMS 7 LTS - What’s New
  129. 129. Extbase & Fluid Callouts anstelle von FlashMessages An einigen Stellen im Backend werden nun Callouts anstelle von FlashMessages verwendet Dafür wurde ein neuer Fluid ViewHelper be.infobox eingeführt: <f:be.infobox title="Message title"> Inhalt der Nachricht </f:be.infobox> <f:be.infobox title="Message title" message="your box content" state="-2" iconName="check" disableIcon="TRUE" /> TYPO3 CMS 7 LTS - What’s New
  130. 130. Extbase & Fluid format.case ViewHelper Es gibt nun einen format.case ViewHelper, der die Schreibweise von Strings verändert: upper: Führt zu "UPPERCASE" (Großbuchstaben) lower: Führt zu "lowercase" (Kleinbuchstaben) capital: Führt zu einem großen Anfangsbuchstaben uncapital: Führt zu einem kleinen Anfangsbuchstaben // Fuehrt zu "SOME TEXT WITH MIXED CASE" <f:format.case>Some TeXt WiTh miXed cAse</f:format.case> // Fuehrt zu "SomeString" <f:format.case mode="capital">someString</f:format.case> TYPO3 CMS 7 LTS - What’s New
  131. 131. Extbase & Fluid Diverses Parameter cHash wird nicht mehr an URLs angehängt, die auf eine Action leiten, welche nicht gecached wird oder wenn der Request nicht gecached wird. TYPO3 CMS 7 LTS - What’s New
  132. 132. Extbase & Fluid ActionMenuItemGroupViewHelper (1) Mit diesem neuen ViewHelper können im Backend Optionen-Gruppen für Select-Felder verwendet werden Beispiel: <f:be.menus.actionMenu> <f:be.menus.actionMenuItem label="Default: Welcome" controller="Default" action="index" /> <f:be.menus.actionMenuItem label="Community: get in touch" controller="Community" action="index" /> <f:be.menus.actionMenuItemGroup label="Information"> <f:be.menus.actionMenuItem label="PHP Information" controller="Information" action="listPhpInfo" /> <f:be.menus.actionMenuItem label="Documentation" controller="Information" action="documentation" /> <f:be.menus.actionMenuItem label="Hooks" controller="Information" action="hooks" /> <f:be.menus.actionMenuItem label="Signals" controller="Information" action="signals" /> <f:be.menus.actionMenuItem label="XClasses" controller="Information" action="xclass" /> </f:be.menus.actionMenuItemGroup> </f:be.menus.actionMenu> TYPO3 CMS 7 LTS - What’s New
  133. 133. Extbase & Fluid ActionMenuItemGroupViewHelper (2) Beispiel auf der vorherigen Slide resultiert in folgender Ausgabe: TYPO3 CMS 7 LTS - What’s New
  134. 134. Extbase & Fluid Template-Support für FlashMessagesViewHelper Der FlashMessagesViewHelper hat nun Template Unterstützung Mit dem neuen Attribut as kann man eine Variable festlegen, über der der Zugriff auf die Messages möglich ist Beispiel: <f:flashMessages as="flashMessages"> <ul class="myFlashMessages"> <f:for each="{flashMessages}" as="flashMessage"> <li class="alert {flashMessage.class}"> <h4>{flashMessage.title}</h4> <span class="fancy-icon">{flashMessage.message}</span> </li> </f:for> </ul> </f:flashMessages> Die Option renderMode ist ab sofort "deprecated"! TYPO3 CMS 7 LTS - What’s New
  135. 135. Extbase & Fluid Neue Eigenschaften im cObject FLUIDTEMPLATE (1) Das cObject FLUIDTEMPLATE wurde um die Eigenschaften templateRootPaths und templateName ergänzt Man kann nun einen Template-Namen setzen, der zusammen mit dem Format im angegebenen Template-Pfad gesucht wird templateRootPaths hat die selbe Fallback-Logik wie layoutRootPath und partialRootPath templateName (string/stdWrap) templateRootPaths (Array mit Datei-Pfaden und "EXT:" Unterstützung) TYPO3 CMS 7 LTS - What’s New
  136. 136. Extbase & Fluid Neue Eigenschaften im cObject FLUIDTEMPLATE (2) TypoScript Beispiel: lib.stdContent = FLUIDTEMPLATE lib.stdContent { templateName = TEXT templateName.stdWrap { cObject = TEXT cObject { data = levelfield:-2,backend_layout_next_level,slide override.field = backend_layout split { token = frontend__ 1.current = 1 1.wrap = | } } ifEmpty = Default } templateRootPaths { 10 = EXT:frontend/Resources/Private/Templates 20 = EXT:sitemodification/Resources/Private/Templates } } TYPO3 CMS 7 LTS - What’s New
  137. 137. Extbase & Fluid Entfernung von xmlns-Attributes und des HTML-Tags (1) Durch die Einführung von xmlns:*-Attributen in Tags ist es einer IDE möglich Fluid direkt zu unterstützen (z.B. Syntax-Highlighting, Autovervollständigung, usw.). Diese Attribute werden allerdings auch ausgegeben. Der Workaround, den eigentlichen Inhalt in Sections auszulagern, ist in Layouts nicht möglich und zudem nicht intuitiv Daher wird ein Namespace, sofern dieser den Aufbau http://typo3.org/ns/<phpNamespace> hat, automatisch entfernt (alle anderen Namespaces bleiben erhalten) TYPO3 CMS 7 LTS - What’s New
  138. 138. Extbase & Fluid Entfernung von xmlns-Attributes und des HTML-Tags (2) Verwendet man im HTML-Tag das Attribut data-namespace-typo3-fluid="true", wird das gesamte HTML-Tag (öffnendes und schließendes) nicht gerendert <html data-namespace-typo3-fluid="true" xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"> <f:if condition="{newsItem.title}"> <f:then> <n:titleTag>{newsItem.title}</n:titleTag> </f:then> <f:else> <n:titleTag>News-Detail</n:titleTag> </f:else> </f:if> </html> TYPO3 CMS 7 LTS - What’s New
  139. 139. Extbase & Fluid Neue Methoden im Fluid-StandaloneView Der StandaloneView wird mit den Methoden setTemplateRootPaths($templatePaths) und setTemplate($templateName, $throwException = TRUE) erweitert Selbe Funktionalität wie im cObject FLUIDTEMPLATE Beispiel (Rendern eines Email-Templates): $view = GeneralUtility::makeInstance(StandaloneView::class); $view->setLayoutRootPaths(array(GeneralUtility::getFileAbsFileName( ’EXT:my_extension/Resources/Private/Layouts’))); $view->setPartialRootPaths(array(GeneralUtility::getFileAbsFileName( ’EXT:my_extension/Resources/Private/Partials’))); $view->setTemplateRootPaths(array(GeneralUtility::getFileAbsFileName( ’EXT:my_extension/Resources/Private/Templates’))); $view->setTemplate(’Email/Notification’); $emailBody = $view->render(); TYPO3 CMS 7 LTS - What’s New
  140. 140. Extbase & Fluid Data Processing für FLUIDTEMPLATE cObject (1) Das cObject FLUIDTEMPLATE wird mit der Option dataProcessing (enthält ein Array aus FQCN) ausgerüstet, mit dessen Hilfe man das $data Array manipulieren kann, welches das aktuell zu rendernde Objekt (wie page oder tt_content) enthält Der Prozessor muss das Interface FluidTemplateDataProcessorInterface implementieren und folgende Methode enthalten: function process(array &$data, array $processorConfiguration, array $configuration, StandaloneView $view) { [...] } TYPO3 CMS 7 LTS - What’s New
  141. 141. Extbase & Fluid Data Processing für FLUIDTEMPLATE cObject (2) Beispiel: my_custom_ctype = FLUIDTEMPLATE my_custom_ctype { templateRootPaths { 10 = EXT:your_extension_key/Resources/Private/Templates } templateName = CustomName settings { extraParam = 1 } dataProcessing { 1 = VendorYourExtensionKeyDataProcessingMyFirstCustomProcessor 2 = AnotherVendorAnotherExtensionKeyDataProcessingMySecondCustomProcessor 2 { options { myOption = SomeValue } } } } TYPO3 CMS 7 LTS - What’s New
  142. 142. Extbase & Fluid Section-Anker für Pagination Widget Es ist nun möglich einen Section-Anker im Pagination Widget zu verwenden Dazu gibt es den Schlüssel section im Attribut configuration Im folgenden Beispiel wird der Anker #archive an jeden Widget-Link angehängt: <f:widget.paginate objects="{plantpestWarnings}" as="paginatedWarnings" configuration="{section: ’archive’, itemsPerPage: 10, insertAbove: 0, insertBelow: 1, maximumNumberOfLinks: 10}"> [...] </f:widget.paginate> TYPO3 CMS 7 LTS - What’s New
  143. 143. Extbase & Fluid Attribut base für Date-ViewHelper Der Date-ViewHelper wurde um das optionale Attribut base ergänzt Damit kann man relative Berechnungen durchführen Wird das Datum als DateTime angegeben, wird base ignoriert Erlaubte Werte: siehe PHP Dokumentation Das folgende Beispiel gibt "2016" zurück, wenn das Objekt "dateObject" ein beliebiges Datum in 2017 enthält: <f:format.date format="Y" base="{dateObject}">-1 year</f:format.date> TYPO3 CMS 7 LTS - What’s New
  144. 144. Extbase & Fluid dataProcessing bei FLUIDTEMPLATE Mit TYPO3 CMS 7.3 wurde die Option dataProcessing beim Content-Objekt FLUIDTEMPLATE eingeführt Hierfür ändert sich das zu implementierende Interface von FluidTemplateDataProcessorInterface in DataProcessorInterface und damit auch die Methode process() public function process( ContentObjectRenderer $cObj, array $contentObjectConfiguration, array $processorConfiguration, array $processedData ); BREAKING CHANGE! TYPO3 CMS 7 LTS - What’s New
  145. 145. Extbase & Fluid Severity-Filter für FlashMessages Bislang konnten nur alle FlashMessages auf einmal ermittelt und/oder gelöscht werden Nun kann man diese entsprechend der Severity (Gewichtung) filtern FlashMessageQueue::getAllMessages($severity); FlashMessageQueue::getAllMessagesAndFlush($severity); FlashMessageQueue::removeAllFlashMessagesFromSession($severity); FlashMessageQueue::clear($severity); TYPO3 CMS 7 LTS - What’s New
  146. 146. Extbase & Fluid Query-Support für between hinzugefügt Es wurde between zum Extbase Query Objekt hinzugefügt, welches prüft, ob sich ein Wert innerhalb einer oberen und unteren Grenze (einschließlich) befindet Dies wird zu (min <= expr AND expr <= max) übersetzt. Dadurch hat dies keine Performance-Auswirkungen und funktioniert auf jedem DBMS $query->matching( $query->between(’uid’, 3, 5) ); TYPO3 CMS 7 LTS - What’s New
  147. 147. Extbase & Fluid Mehrere Message-Queues Es können nun mehrere Message-Queues in Extbase realisiert werden: $queueIdentifier = ’myQueue’; $this->controllerContext->getFlashMessageQueue($queueIdentifier); In Fluid kann wie folgt darauf zugegriffen werden: <f:flashMessages queueIdentifier="myQueue" /> TYPO3 CMS 7 LTS - What’s New
  148. 148. Extbase & Fluid Media-ViewHelper (1) Um Medien komfortabel im Frontend rendern zu können (z.B. Video, Audio, registrierte Renderer), wurde ein MediaViewHelper zugefügt Zuerst versucht der ViewHelper den Renderer aufzurufen; schlägt dies fehl, wird ein Image-Tag gerendert Beispiel: <code title="Image Object"> <f:media file="{file}" width="400" height="375" /> </code> <output> <img alt="alt set in image record" src="fileadmin/_processed_/323223424.png" width="396" height="375" /> </output> TYPO3 CMS 7 LTS - What’s New
  149. 149. Extbase & Fluid Media-ViewHelper (2) Beispiel (Fortsetzung): <code title="MP4 Video Object"> <f:media file="{file}" width="400" height="375" /> </code> <output> <video width="400" height="375" controls> <source src="fileadmin/user_upload/my-video.mp4" type="video/mp4"> </video> </output> <code title="MP4 Video Object with loop and autoplay option set"> <f:media file="{file}" width="400" height="375" additionalConfig="{loop: ’1’, autoplay: ’1’}" /> </code> <output> <video width="400" height="375" controls loop> <source src="fileadmin/user_upload/my-video.mp4" type="video/mp4"> </video> </output> TYPO3 CMS 7 LTS - What’s New
  150. 150. Extbase & Fluid System-Extension form (1) Die System-Extension form (inkl. Daten-Model, Controller-Logig, Property Validation, Views und Templating) wurde so adaptiert, dass der Extbase/Fluid MVC Stack unterstützt wird Die Ausgabe basiert nun komplett auf Fluid und kann somit entsprechend angepasst werden. Pro Form-Element gibt es ein eigenes Partial, welches nun auch individuell über die TypoScript-Option partialPath = ... angepasst werden kann Es wurden drei neue ViewHelper implementiert: AggregateSelectOptionsViewHelper (für optgroup Tags) SelectViewHelper (für von optgroup Tags) PlainMailViewHelper (zum Rendern von Plaintext Mails) TYPO3 CMS 7 LTS - What’s New
  151. 151. Extbase & Fluid System-Extension form (2) Außerdem gibt drei Views: show (das Formular selbst) confirmation (die Bestätigungsseite) postProcessor/mail (die Email) Die Template-Pfade und Sichtbarkeiten der Felder können für jeden View individuell angepasst werden TYPO3 CMS 7 LTS - What’s New
  152. 152. Extbase & Fluid Annotation @cli Eine neue Annotation @cli wurde eingeführt: wird diese beim CommandController verwendet, so kann dieser nur auf der Kommandozeile, aber nicht im Scheduler verwendet werden TYPO3 CMS 7 LTS - What’s New
  153. 153. Extbase & Fluid Relationen zu gleichen Tabellen Es nun möglich ein Domain Model zu verwenden, in der ein Objekt eine Relation zu einem anderen Objekt der selben Klasse hat namespace VendorExtensionDomainModel; class A { /** * @var VendorExtensionDomainModelA */ protected $parent; } namespace VendorExtensionDomainModel; class A { /** * @var VendorExtensionDomainModelB */ protected $x; /** * @var VendorExtensionDomainModelB */ protected $y; } TYPO3 CMS 7 LTS - What’s New
  154. 154. Extbase & Fluid absolute Option für Image-ViewHelper Der ImageViewhelper und Uri/ImageViewHelper haben nun eine Option absolute, mit der eine absolute URL ausgegeben werden kann. Beispiel 1 (ImageViewhelper): <f:image image="{file}" width="400" height="375" absolute="1" ></f:image> // Ausgabe <img alt="alt set in image record" src="http://www.mydomain.com/fileadmin/_processed_/323223424.png" width="400" height="375" /> Beispiel 2 (Uri/ImageViewHelper): <f:uri.image image="{file}" width="400" height="375" absolute="1" ></f:uri> // Ausgabe http://www.mydomain.com/fileadmin/_processed_/323223424.png TYPO3 CMS 7 LTS - What’s New
  155. 155. Extbase & Fluid ViewHelper um Whitespaces in HTML zu entfernen Es wurde ein ViewHelper spaceless eingeführt, um überflüssige Leerzeichen zwischen HTML-Tages zu entfernen. Beispiel: <f:spaceless> <div> <div> <div>text text</div> </div> </div> Ausgabe: <div><div><div>text text</div></div></div> TYPO3 CMS 7 LTS - What’s New
  156. 156. Extbase & Fluid RootLevel Konfiguration Der RootLevel einer Tabelle kann nun im TCA konfiguriert werden (damit wird festgelegt, wo die zugehörigen Datensätze gesucht werden) 0: Nur im Seitenbaum 1: Nur auf der Root-Seite (PID 0) -1: In beiden Zudem muss das TCA konfiguriert werden: $GLOBALS[’TCA’][’tx_myext_domain_model_record’][’ctrl’][’rootLevel’] = -1; TYPO3 CMS 7 LTS - What’s New
  157. 157. Sources and Authors Quellen und Autoren TYPO3 CMS 7 LTS - What’s New
  158. 158. Sources and Authors Quellennachweis TYPO3 News: http://typo3.org/news Release Infos: https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.x INSTALL.md and ChangeLog typo3/sysext/core/Documentation/Changelog/* TYPO3 Bug-/Issuetracker: https://forge.typo3.org/projects/typo3cms-core TYPO3 Git Repositories: https://git.typo3.org/Packages/TYPO3.CMS.git https://git.typo3.org/Packages/TYPO3.Fluid.git TYPO3 CMS 7 LTS - What’s New
  159. 159. Sources and Authors pluswerk pluswerk ist eine Full Service Agentur für leidenschaftliche digitale Kommunikation mit 10 Standorten in Deutschland und über 130 Mitarbeitern www.pluswerk.ag | +49 89 130 145 20 | facebook.com/pluswerk TYPO3 CMS 7 LTS - What’s New
  160. 160. TYPO3 CMS 7 LTS - What’s New Änderungen im System Patrick Lobacher (Vorstand pluswerk AG) http://www.pluswerk.ag 10/November/2015 Creative Commons BY-NC-SA 3.0
  161. 161. Introduction TYPO3 CMS 7 LTS - What’s New Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig von der Rolle, können die folgenden Themen ebenfalls interessant sein:BEUserInterface TypoScript In-DepthChanges Extbase/Fluid Deprecated/Removed Sys.Administration Redakteure X Integratoren X X X Entwickler X X X SysAdmins X Download aller What’s New Slides unter typo3.org TYPO3 CMS 7 LTS - What’s New
  162. 162. Änderungen im System Änderungen im System Durch die Überarbeitung aller Komponenten und der Entfernung veralteter Technologien, ist das Backend von TYPO3 CMS 7 LTS nun deutlich schneller geworden im Vergleich zu älteren Versionen. Der Performance-Boost ist aber nicht die einizige Änderung im Backend - viele weitere Änderungen wurden im Core durchgeführt. PHP Code wurde aufgeräumt, einige Komponenten in Extbase neu geschrieben und viele neue Features wurden mit Hilfe von aktuallen Technologien und Programmier-Paradigmen implementiert. TYPO3 CMS 7 LTS - What’s New
  163. 163. Änderungen im System Integration von jQuery UI 1.11.2 jQuery UI 1.11 unterstützt AMD (Asynchronous Module Definition), mit welcher JavaScript Dateien erst geladen werden, wenn sie benötigt werden (Geschwindigkeitsvorteil) jQuery UI 1.11 ersetzt jQuery UI 1.10 + Scriptaculous in TYPO3 CMS 7.0 Es werden nur der Core und Interaction Components inkludiert, die notwendig sind, um ExtJS und Scriptaculous zu ersetzen. Widgets werden nicht inkludiert, sondern über Bootstrap realisiert (z.B. DatePicker, Spinner, Dialog, Buttons, Tabs, Tooltip) TYPO3 CMS 7 LTS - What’s New
  164. 164. Änderungen im System Registry für die File Rendering Classes Um verschiedene Dateiformate zu rendern, wird eine Registry benötigt, bei der sich FileRenderer registrieren können. Dies geschieht für "Name" (z.B. Video, MPEG, AVI, WAV, ...) wie folgt: <?php namespace ...; class NameTagRenderer implements FileRendererInterface { protected $possibleMimeTypes = array(’audio/mpeg’, ’audio/wav’, ...); public function getPriority() { return 1; // priority: the higher, the more important (max: 100) } public function canRender(FileInterface $file) { return in_array($file->getMimeType(), $this->possibleMimeTypes, TRUE); } public function render(FileInterface $file, $width, $height, array $options = array(), $usedPathsRelativeToCurrentScript = FALSE) { ... return ’HTML code’; } } TYPO3 CMS 7 LTS - What’s New
  165. 165. Änderungen im System Evaluierungsfunktion "email" für das TCA Für das TCA wurde eine neue Evaluierungsfunktion "email" hinzugefügt, welche serverseitig überprüft, ob ein eingegebener Wert eine gültige Email ist. Im Fehlerfall wird eine Flash-Message ausgegeben Example: ’emailaddress’ => array( ’exclude’ => 1, ’label’ => ’LLL:EXT:myextension/Resources/Private/Language/locallang_db .xlf:tx_myextension ’config’ => array( ’type’ => ’input’, ’size’ => 30, ’eval’ => ’email,trim’ ), ) TYPO3 CMS 7 LTS - What’s New
  166. 166. Änderungen im System Einführung einer abstrakten Condition in TypoScript Es gibt nun eine AbstractCondition, von der eigene Conditions ableiten können class TestCondition extends TYPO3CMSCoreConfigurationTypoScriptConditionMatchingAbstractCondition { public function matchCondition(array $conditionParameters) { if ($conditionParameters[0] === ’= 7’ && $conditionParameters[1] === ’!= 6’) { throw new TestConditionException(’All Ok’, 1411581139); } } } Die Verwendung in TypoScript sieht wie folgt aus: [VendorPackageTestCondition] [VendorPackageTestCondition = 7] [VendorPackageTestCondition = 7, != 6] Welche Operatoren in der Condition zur Verfügung stehen, wird in der Klasse selbst festgelegt TYPO3 CMS 7 LTS - What’s New
  167. 167. Änderungen im System Signal zur Manipulation des HTML-Tags in IconUtility Signal für IconUtility zur HTML-Tag Manipulation dispatch( ’TYPO3CMSBackendUtilityIconUtility’, ’buildSpriteHtmlIconTag’, array($tagAttributes, $innerHtml, $tagName) ); Wird aufgerufen in: TYPO3CMSBackendUtilityIconUtilitybuildSpriteHtmlIconTag TYPO3 CMS 7 LTS - What’s New
  168. 168. Änderungen im System Signal Slots für SoftReferenceIndex Zwei neue Signal Slot Dispatch Calls innerhalb von SoftReferenceIndex: protected function emitGetTypoLinkParts( $linkHandlerFound, $finalTagParts, $linkHandlerKeyword, $linkHandlerValue) { return $this->getSignalSlotDispatcher()->dispatch( get_class($this), ’getTypoLinkParts’, array($linkHandlerFound, $finalTagParts, $linkHandlerKeyword, $linkHandlerValue) ); } protected function emitSetTypoLinkPartsElement( $linkHandlerFound, $tLP, $content, $elements, $idx, $tokenID) { return $this->getSignalSlotDispatcher()->dispatch( get_class($this), ’setTypoLinkPartsElement’, array($linkHandlerFound, $tLP, $content, $elements, $idx, $tokenID, $this) ); } Wird augerufen in: TYPO3CMSCoreDatabaseSoftReferenceIndex->findRef_typolink TYPO3CMSCoreDatabaseSoftReferenceIndex->getTypoLinkParts TYPO3 CMS 7 LTS - What’s New
  169. 169. Änderungen im System Signal Slots für afterPersistObjects Bislang gab es nur ein Signal, wenn ein Objekt im Repository (Extbase) aktualisiert wurde: afterUpdate Da aber ein Aggregate Root beispielsweise Subobjekte ebenfalls persistiert, benötigt es ein Signal, welches erst dann emmitiert wird, wenn alle Objekte eines Aggregate Roots persistiert wurden: protected function emitAfterPersistObjectSignal(DomainObjectInterface $object) { $this->signalSlotDispatcher->dispatch(__CLASS__, ’afterPersistObject’, array($object)); } Wird aufgerufen in: TYPO3CMSExtbasePersistenceGenericBackend->persistObject TYPO3 CMS 7 LTS - What’s New
  170. 170. Änderungen im System Signal Slots für loadBaseTca Mit diesem Signal kann das gesamte TCA (anstelle von Teilen) gecacht werden protected function emitTcaIsBeingBuiltSignal(array $tca) { list($tca) = static::getSignalSlotDispatcher()->dispatch( __CLASS__, ’tcaIsBeingBuilt’, array($tca) ); $GLOBALS[’TCA’] = $tca; } Wird audgerufen in: TYPO3CMSCoreUtilityExtensionManagementUtilityBackend-> buildBaseTcaFromSingleFiles TYPO3 CMS 7 LTS - What’s New
  171. 171. Änderungen im System API um gecachte TCA Änderungen zuzufügen PHP Dateien in extkey/Configuration/TCA/Overrides/ werden ausgeführt, direkt nachdem der TCA-Cache aufgebaut wurde Die Dateien dürfen nur Code enthalten, der das TCA manipuliert, wie beispielsweise: addTCAColumns oder addToAllTCATypes Sobald Extensions dieses Features verwenden, ist mit einem deutlichen Geschwindigkeitsschub von Backend Requests zu rechnen TYPO3 CMS 7 LTS - What’s New
  172. 172. Änderungen im System Nur-lesender Zugriff auf File Mounts File Mounts können (wieder) mit nur-lesenden Zugriff konfiguriert werden ("read-only") Jenes war bereits in TYPO3 CMS 4.x möglich, wurde aber in TYPO3 CMS 6.x entfernt Zum Beispiel: Ordner "test" vom storage UID 3 als Mount mit nur lesenden Zugriff in der Dateiliste und dem Element Browser: options.folderTree.altElementBrowserMountPoints = 3:/test Falls kein Storage angegeben wird, geht man davon aus, dass sich der Ordner im Default Storage befindet. TYPO3 CMS 7 LTS - What’s New
  173. 173. Änderungen im System Sonstiges jQuery wurde von Version 1.11.0 auf Version 1.11.1 aktualisiert Datatables wurde von Version 1.9.4 zu Version 1.10.2 aktualisiert Einige alte, nicht mehr benutzte Variablen wurden von EM_CONF entfernt Extension Icons können nun auch im SVG Bildformat vorliegen (ext_icon.svg) Das Senden eines unbekannten eID Identifikators im Request resultiert nun in eine Exception TYPO3 CMS 7 LTS - What’s New
  174. 174. Änderungen im System TCA: Maximum chars in text element TCA-Typ text unterstützt nun das HTML5-Attribut maxlength, um die maximale Anzahl der einzugebenden Zeichen zu beschränken (Hinweis: Zeilenumbrüche zählen hierbei als zwei Zeichen) ’teaser’ => array( ’label’ => ’Teaser’, ’config’ => array( ’type’ => ’text’, ’cols’ => 60, ’rows’ => 2, ’max’ => ’30’ // <-- maxlength ) ), Es ist zu beachten, dass nicht alle Browser dieses Attribut unterstützen. Siehe: Browserübersicht TYPO3 CMS 7 LTS - What’s New
  175. 175. Änderungen im System New SplFileInfo implementation Neue Klasse: TYPO3CMSCoreTypeFileFileInfo Diese erweitert SplFileInfo, die wiederrum Meta-Informationen von Dateien ermittelt $fileIdentifier = ’/tmp/foo.html’; $fileInfo = GeneralUtility::makeInstance( TYPO3CMSCoreTypeFileFileInfo::class, $fileIdentifier ); echo $fileInfo->getMimeType(); // output: text/html Entwickler können über folgenden Hook auf die Funktionalität zugreifen: $GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’] [TYPO3CMSCoreTypeFileFileInfo::class][’mimeTypeGuessers’] TYPO3 CMS 7 LTS - What’s New
  176. 176. Änderungen im System UserFunc in TCA Display Condition userFunc displayCondition ermöglicht es auf jeden erdenklichen Status und jede Condition zu prüfen Sollte irgendeine Situation nicht mit den existierenden Checks abgefangen werden können, ist es auch möglich, eigene Funktionen zu schreiben (diese müssen lediglich TRUE/FALSE zurückgeben, um das entsprechende TCA Field sichtbar zu machen oder zu verbergen) $GLOBALS[’TCA’][’tt_content’][’columns’][’bodytext’][’displayCond’] = ’USER:VendorExampleUserElementConditionMatcher-> checkHeaderGiven:any:more:information’; TYPO3 CMS 7 LTS - What’s New
  177. 177. Änderungen im System API für Twitter Bootstrap Modals (1) Zwei neue API Methoden um Modal Popups zu erzeugen/entfernen: TYPO3.Modal.confirm(title, content, severity, buttons) TYPO3.Modal.dismiss() Optionen title und content sind mindestens erforderlich Optionen buttons.text und buttons.trigger sind erforderlich, wenn buttons verwendet wird Beispiel 1: TYPO3.Modal.confirm( ’The title of the modal’, // title ’This the the body of the modal’, // content TYPO3.Severity.warning // severity ); TYPO3 CMS 7 LTS - What’s New
  178. 178. Änderungen im System API für Twitter Bootstrap Modals (2) Beispiel 2: TYPO3.Modal.confirm(’Warning’, ’You may break the internet!’, TYPO3.Severity.warning, [ { text: ’Break it’, active: true, trigger: function() { ... } }, { text: ’Abort!’, trigger: function() { TYPO3.Modal.dismiss(); } } ] ); TYPO3 CMS 7 LTS - What’s New
  179. 179. Änderungen im System JavaScript Storage API (1) Mittels JavaScript kann auf die BE User Konfiguration zugegriffen werden ($BE_USER->uc, einfache Key-Value Paare) Zusätzlich kann nun auch der HTML5 Standard localStorage verwendet werden, um Daten (Client-seitig) im Browser des Benutzers zu speichern und auszulesen Zwei neue global TYPO3 Objekte: top.TYPO3.Storage.Client top.TYPO3.Storage.Persistent Jedes Objekt hat folgende API Methoden: get(key): Daten holen set(key,value): Daten schreiben isset(key): Prüfen, ob key genutzt wird clear(): Löschen des Speichers TYPO3 CMS 7 LTS - What’s New
  180. 180. Änderungen im System JavaScript Storage API (2) Beispiel: // get value of key ’startModule’ var value = top.TYPO3.Storage.Persistent.get(’startModule’); // write value ’web_info’ as key ’start_module’ top.TYPO3.Storage.Persistent.set(’startModule’, ’web_info’); TYPO3 CMS 7 LTS - What’s New
  181. 181. Änderungen im System Inline Rendering von Checkboxes Die Konfiguration inline sorgt bei "cols" dafür, dass Checkboxen nebeneinander dargestellt werden, um Platz im Backend User Interface zu sparen ’weekdays’ => array( ’label’ => ’Weekdays’, ’config’ => array( ’type’ => ’check’, ’items’ => array( array(’Mo’, ’’), array(’Tu’, ’’), array(’We’, ’’), array(’Th’, ’’), array(’Fr’, ’’), array(’Sa’, ’’), array(’Su’, ’’) ), ’cols’ => ’inline’ ) ), ... TYPO3 CMS 7 LTS - What’s New
  182. 182. Änderungen im System Content Object Registration Es wurde eine neue globale Option eingeführt, um cObjects wie TEXT zu registrieren bzw. zu erweitern Eine Liste aller verfügbaren cObjects ist verfügbar als: $GLOBALS[’TYPO3_CONF_VARS’][’FE’][’ContentObjects’] Beispiel: ein neues cObject EXAMPLE registrieren $GLOBALS[’TYPO3_CONF_VARS’][’FE’][’ContentObjects’][’EXAMPLE’] = VendorMyExtensionContentObjectExampleContentObject::class; Die registrierte Klasse muss von der folgenden Klasse ableiten: TYPO3CMSFrontendContentObjectAbstractContentObject Idealerweise speichert man seine Datei im Verzeichnis typo3conf/myextension/Classes/ContentObject/ um für zukünftige Autoload-Funktionen vorbereitet zu sein TYPO3 CMS 7 LTS - What’s New
  183. 183. Änderungen im System Hooks und Signals (1) Neuer Hook wurde am Ende von PageRepository->init() hinzugefügt, mit dem die Sichtbarkeit von Seiten beeinflusst werden kann Der Hook kann wie folgt registriert werden: $GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’] [TYPO3CMSFrontendPagePageRepository::class][’init’] Die Hook-Klasse muss das folgende Interface implementieren: TYPO3CMSFrontendPagePageRepositoryInitHookInterface TYPO3 CMS 7 LTS - What’s New
  184. 184. Änderungen im System Hooks und Signals (2) Neuer Hook wurde zu PageLayoutView hinzugefügt, um das Rendering des Footers von Inhaltselementen im Backend manipulieren zu können Beispiel: $GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’] [’cms/layout/class.tx_cms_layout.php’][’tt_content_drawFooter’]; Die Hook-Klasse muss das folgende Interface implementieren: TYPO3CMSBackendViewPageLayoutViewDrawFooterHookInterface TYPO3 CMS 7 LTS - What’s New
  185. 185. Änderungen im System Hooks und Signals (3) Es wurde ein Hook als Post-Prozessor zu BackendUtility::countVersionsOfRecordsOnPage hinzugefügt Dieser wird z.B. verwendet, um Workspace-Zustände im Seitenbaum zu visualisieren Der Hook kann wie folgt registriert werden: $GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’] [’t3lib/class.t3lib_befunc.php’][’countVersionsOfRecordsOnPage’][] = ’MyPackageHookClass->hookMethod’; TYPO3 CMS 7 LTS - What’s New
  186. 186. Änderungen im System Hooks und Signals (4) Neues Signal wurde am Ende der Methode DataPreprocessor::fetchRecord() hinzugefügt Jenes kann dazu verwendet werden, um das Array regTableItems_data zu manipulieren, damit die manipulierten Daten in TCEForms angezeigt werden können $this->getSignalSlotDispatcher()->dispatch( TYPO3CMSBackendFormDataPreprocessor::class, ’fetchRecordPostProcessing’, array($this) ); TYPO3 CMS 7 LTS - What’s New
  187. 187. Änderungen im System Hooks und Signals (5) Neues Signal wurde eingeführt, um zusätzlichen Code bei der Registrierung des Mailer-Objekts auszuführen (z.B. Swift Mailer Plugins) $signalSlotDispatcher = TYPO3CMSCoreUtilityGeneralUtility::makeInstance( TYPO3CMSExtbaseSignalSlotDispatcher::class ); $signalSlotDispatcher->connect( TYPO3CMSCoreMailMailer::class, ’postInitializeMailer’, VendorPackageSlotsMailerSlot::class, ’registerPlugin’ ); TYPO3 CMS 7 LTS - What’s New
  188. 188. Änderungen im System Multiple UID in PageRepository::getMenu() Methode PageRepository::getMenu() kann nun auch ein Array aufnehmen, um meherer Root-Seiten zu definieren $pageRepository = new TYPO3CMSFrontendPagePageRepository(); $pageRepository->init(FALSE); $rows = $pageRepository->getMenu(array(2, 3)); TYPO3 CMS 7 LTS - What’s New
  189. 189. Änderungen im System SVG Support im Core Der Core unterstützt nun SVG-Bilder ("Scalable Vector Graphics") Wenn ein SVG-Bild skaliert wird, wird kein prozessiertes Bild abgelegt, dafür aber die neuen Größenangaben in einem Datensatz sys_file_processedfile gespeichert (außer, das Bild wird - z.B. durch Cropping - weiterverarbeitet). Zudem wurde ein zusätzlicher Fallback eingebaut, falls ImageMagick/GraphicsMagick nicht in der Lage sein sollte, die Dimensionen zu berechnen: in diesem Fall wird das XML ausgelesen. SVG wurde außerdem zur Liste der zulässigen Bildtypen hinzugefügt: $GLOBALS[’TYPO3_CONF_VARS’][’GFX’][’imagefile_ext’] TYPO3 CMS 7 LTS - What’s New
  190. 190. Änderungen im System Erweiterung der FAL-Treiber Um die Performance der Dateiliste bei (Remote-)Storages innerhalb von FAL zu erhöhen, ist es notwendig, die Sortierung und das Ermitteln der Anzahl direkt im Treiber zu erledigen. Dafür wurden zwei neue Parameter sort und sortRev eingebracht: public function getFilesInFolder($folderIdentifier, $start = 0, $numberOfItems = 0, $recursive = FALSE, array $filenameFilterCallbacks = array(), $sort = ’’, $sortRev = FALSE); public function getFoldersInFolder($folderIdentifier, $start = 0, $numberOfItems = 0, $recursive = FALSE, array $folderNameFilterCallbacks = array(), $sort = ’’, $sortRev = FALSE); Außerdem wurden zwei neue Methoden eingeführt: public function getFilesInFolderCount($folderIdentifier, $recursive = FALSE, array $filenameFilterCallbacks = array()); public function getFoldersInFolderCount($folderIdentifier, $recursive = FALSE, array $folderNameFilterCallbacks = array()); TYPO3 CMS 7 LTS - What’s New
  191. 191. Änderungen im System Backend Routing API (1) Der Core enthält nun eine Backend Routing API, welche die Entry Points ins Backend verwaltet Die Routing API wurde vom Symfony Routing Framework inspiriert und ist weitgehend kompatibel mit dieser (auch wenn für TYPO3 zur Zeit nur ca. 20% genutzt werden) Grundsätzlich existieren hierfür drei Klassen: class Route: enthält Angaben zum Pfad und Optionen class Router: API, um die Route zu matchen class UrlGenerator: generiert die URL TYPO3 CMS 7 LTS - What’s New
  192. 192. Änderungen im System Backend Routing API (2) Routen werden dabei in folgender Datei in der entsprechenden Extension definiert: Configuration/Backend/Routes.php (siehe Systemextension backend als Beispiel) Weitere Informationen zur Backend Routing API: http://wiki.typo3.org/Blueprints/BackendRouting TYPO3 CMS 7 LTS - What’s New
  193. 193. Änderungen im System Neue Systemextension für Media Inhaltselemente Neue Systemextension "mediace" enthält folgende cObjects: MULTIMEDIA MEDIA SWFOBJECT FLOWPLAYER QTOBJECT Die Inhaltselemente media und multimedia wurden ebenfalls in die Systemextension verschoben, ebenso der "Media Wizard Provider" Die Extension ist standardmäßig nicht installiert! TYPO3 CMS 7 LTS - What’s New
  194. 194. Änderungen im System Fremd-Bibliotheken an neuer Stelle Sämtliche Fremd-Bibliotheken werden nicht mehr in Packages/Libraries, sondern in typo3/contrib/vendor abgelegt Grundsätzlich ist dafür die Installation der Bibliotheken mittels composer install notwendig Probleme gibt es beim Upgrade einer Installation, wenn dort phpunit verwendet wurde! Dies kann wie folgt behoben werden: # cd htdocs/ # rm -rf typo3/contrib/vendor/ bin/ Packages/Libraries/ composer.lock # composer install TYPO3 CMS 7 LTS - What’s New
  195. 195. Änderungen im System API für JavaScript Notifikationen Neue API, um JavaScript Notifikationen zu erzeugen: // Bisheriger (veralteter) Weg: top.TYPO3.Flashmessages.display(TYPO3.Severity.notice) // Neuer Weg: top.TYPO3.Notification.notice(title, message) Es existieren folgende API-Funktionen: (Parameter duration ist optional und standardmäßig auf 5s eingestellt) top.TYPO3.Notification.notice(title, message, duration) top.TYPO3.Notification.info(title, message, duration) top.TYPO3.Notification.success(title, message, duration) top.TYPO3.Notification.warning(title, message, duration) top.TYPO3.Notification.error(title, message, duration) TYPO3 CMS 7 LTS - What’s New
  196. 196. Änderungen im System Systeminformationen (1) Das Dropdown mit Systeminformationen kann über folgenden Slot erweitert werden: $signalSlotDispatcher = TYPO3CMSCoreUtilityGeneralUtility::makeInstance( TYPO3CMSExtbaseSignalSlotDispatcher::class); $signalSlotDispatcher->connect( TYPO3CMSBackendBackendToolbarItemsSystemInformationToolbarItem::class, ’getSystemInformation’, VendorExtensionSystemInformationItem::class, ’getItem’ ); TYPO3 CMS 7 LTS - What’s New
  197. 197. Änderungen im System Systeminformationen (2) Zur Ansprache benötigt man die Klasse Item und dazugehörig die Methode getItem() innerhalb einer Extension EXT:extensionClassesSystemInformationItem.php: class Item { public function getItem() { return array(array( ’title’ => ’The title shown on hover’, ’value’ => ’Description shown in the list’, ’status’ => SystemInformationHookInterface::STATUS_OK, ’count’ => 4, ’icon’ => TYPO3CMSBackendUtilityIconUtility::getSpriteIcon( ’extensions-example-information-icon’) )); } } TYPO3 CMS 7 LTS - What’s New
  198. 198. Änderungen im System Systeminformationen (3) Das Icon extensions-example-information-icon wird in der Datei ext_localconf.php registriert: TYPO3CMSBackendSpriteSpriteManager::addSingleIcons( array( ’information-icon’ => TYPO3CMSCoreUtilityExtensionManagementUtility::extRelPath( $_EXTKEY) . ’Resources/Public/Images/Icons/information-icon.png’ ), $_EXTKEY ); TYPO3 CMS 7 LTS - What’s New
  199. 199. Änderungen im System Systeminformationen (4) Nachrichten werden am unteren Ende des Dropdowns angezeigt Über den folgenden Slot können eigene Nachrichten eingebracht werden: $signalSlotDispatcher = TYPO3CMSCoreUtilityGeneralUtility::makeInstance( TYPO3CMSExtbaseSignalSlotDispatcher::class); $signalSlotDispatcher->connect( TYPO3CMSBackendBackendToolbarItemsSystemInformationToolbarItem::class, ’loadMessages’, VendorExtensionSystemInformationMessage::class, ’getMessage’ ); TYPO3 CMS 7 LTS - What’s New
  200. 200. Änderungen im System Systeminformationen (5) Zur Ansprache benötigt man die Klasse Message und dazugehörig die Methode getMessage() innerhalb einer Extension EXT:extensionClassesSystemInformationMessage.php: class Message { public function getMessage() { return array(array( ’status’ => SystemInformationHookInterface::STATUS_OK, ’text’ => ’Something went wrong. Take a look at the reports module.’ )); } } TYPO3 CMS 7 LTS - What’s New
  201. 201. Änderungen im System Einstellungen für Bild-Manipulation (1) Folgende Einstellungen können über TypoScript getätigt werden: # Cropping fuer alle Bilder deaktivieren tt_content.image.20.1.file.crop = # Ueberschreiben/Setzen der Cropping Eigenschaften # offsetX,offsetY,width,height tt_content.image.20.1.file.crop = 50,50,100,100 TYPO3 CMS 7 LTS - What’s New
  202. 202. Änderungen im System Einstellungen für Bild-Manipulation (2) Das Cropping kann auch in Fluid verwendet werden: # Cropping fuer alle Bilder deaktivieren <f:image image="{imageObject}" crop="" ></f:image> # Ueberschreiben/Setzen der Cropping Eigenschaften # offsetX,offsetY,width,height <f:image image="{imageObject}" crop="50,50,100,100" ></f:image> TYPO3 CMS 7 LTS - What’s New
  203. 203. Änderungen im System Einstellungen für Bild-Manipulation (3) Im TCA wird das Image-Cropping wie folgt zur Verfügung gestellt: Column Type: image_manipulation Config file_field: string (default: uid_local) Config enableZoom: boolean (default: FALSE) Config allowedExtensions: string (default: $GLOBALS[’TYPO3_CONF_VARS’][’GFX’][’imagefile_ext’]) Config ratios: array, default: array( ’1.7777777777777777’ => ’16:9’, ’1.3333333333333333’ => ’4:3’, ’1’ => ’1:1’, ’NaN’ => ’Free’ ) TYPO3 CMS 7 LTS - What’s New
  204. 204. Änderungen im System Zusätzliche Parameter für HTMLparser userFunc Die userFunc im HTMLparser kann nun zusätzliche Parameter aufnehmen: myobj = TEXT myobj.value = <a href="/" class="myclass">MyText</a> myobj.HTMLparser.tags.a.fixAttrib.class { userFunc = TxMyExtMyclass->htmlUserFunc userFunc.myparam = test } Diese können in einer Extension wie folgt abgerufen werden: function htmlUserFunc(array $params, HtmlParser $htmlParser) { // $params[’attributeValue’] enthaelt den Wert der // verarbeiteten Eigenschaft - hier also "myclass" // $params[’myparam’] enthaelt den Wert "test" ... } TYPO3 CMS 7 LTS - What’s New
  205. 205. Änderungen im System Locking API (1) Es wurde eine neue Locking-API eingeführt, welche verschiedene Locking-Methoden (SimpleFile, Semaphore, ...) zur Verfügung stellt Eine Locking-Methode muss dabei das LockingStrategyInterface implementieren $lockFactory = GeneralUtility::makeInstance(LockFactory::class); $locker = $lockFactory->createLocker(’someId’); $locker->acquire() || die(’Could not acquire lock.’); ... $locker->release(); TYPO3 CMS 7 LTS - What’s New
  206. 206. Änderungen im System Locking API (2) Man kann außerdem "non-blocking" Locks realisieren: $lockFactory = GeneralUtility::makeInstance(LockFactory::class); $locker = $lockFactory->createLocker( ’someId’, LockingStrategyInterface::LOCK_CAPABILITY_SHARED | LockingStrategyInterface::LOCK_CAPABILITY_NOBLOCK ); try { $result = $locker->acquire(LockingStrategyInterface::LOCK_CAPABILITY_SHARED | LockingStrategyInterface::LOCK_CAPABILITY_NOBLOCK); catch (RuntimeException $e) { if ($e->getCode() === 1428700748) { // einige Prozesse haben noch ein Lock // daher sollte etwas in der Zwischenzeit gemacht werden ... } } if ($result) { $locker->release(); } TYPO3 CMS 7 LTS - What’s New
  207. 207. Änderungen im System Signal nach Installation von Extensions In der Methode TYPO3CMSExtensionmanagerUtilityInstallUtility::install() wurde ein Signal eingebaut, welches emmitiert wird, sobald eine Extension fertig installiert ist und alle Imports/Updates durchgelaufen sind // Aufruf $this->emitAfterExtensionInstallSignal($extensionKey); // Methode protected function emitAfterExtensionInstallSignal($extensionKey) { $this->signalSlotDispatcher->dispatch( __CLASS__, ’afterExtensionInstall’, array($extensionKey, $this) ); } TYPO3 CMS 7 LTS - What’s New
  208. 208. Änderungen im System Registry für Text-Extraktoren Der Core enthält nun eine Registry um Text-Extraktoren anzumelden Dabei prüft canExtractText() ob eine Extrahierung möglich ist und extractText() führt diese durch Die Registrierung erfolgt in ext_localconf.php: $textExtractorRegistry = TYPO3CMSCoreResourceTextExtractionTextExtractorRegistry:: getInstance(); $textExtractorRegistry->registerTextExtractor( TYPO3CMSCoreResourceTextExtractionPlainTextExtractor::class ); Die Verwendung erfolgt folgendermaßen: $textExtractorRegistry = TYPO3CMSCoreResourceTextExtractionTextExtractorRegistry:: getInstance(); $extractor = $textExtractorRegistry->getTextExtractor($file); if($extractor !== NULL) { $content = $extractor->extractText($file); } TYPO3 CMS 7 LTS - What’s New
  209. 209. Änderungen im System Diverses Alle Web-Bibliotheken (wie z.B. Twitter Bootstrap, jQuery, Font Awesome usw.) verwenden nun "Bower" (http://bower.io) zur Installation, und sind nicht mehr im TYPO3 Core Git enthalten bower install führt eine Installation durch bower update führt ein Update durch (die zugehörige Datei bower.json befindet sich im Verzeichnis Build) Ein laufender Scheduler Task kann nun in der Kommandozeile mit der Option -s wieder gestoppt werden Der "Processing" Ordner eines Storages kann nun auch außerhalb von diesem liegen (z.B. bei read-only Storages) Man kann nun auf die ID der ursprünglich angefragten Seite über das TSFE zugreifen: $TSFE->getRequestedId() TYPO3 CMS 7 LTS - What’s New
  210. 210. Änderungen im System Symfony/Console im CommandController (1) Der CommandController verwendet nun intern Symfony/Console und stellt damit verschiedene Methoden zur Verfügung: TableHelper outputTable($rows, $headers = NULL) DialogHelper select($question, $choices, $default = NULL, $multiSelect = false, $attempts = FALSE) ask($question, $default = NULL, array $autocomplete = array()) askConfirmation($question, $default = TRUE) askHiddenResponse($question, $fallback = TRUE) askAndValidate($question, $validator, $attempts = FALSE, $default = NULL, array $autocomplete = NULL) askHiddenResponseAndValidate($question, $validator, $attempts = FALSE, $fallback = TRUE) TYPO3 CMS 7 LTS - What’s New
  211. 211. Änderungen im System Symfony/Console im CommandController (2) ProgressHelper progressStart($max = NULL) progressSet($current) progressAdvance($step = 1) progressFinish() (siehe Code-Beispiel auf den folgenden Slides) TYPO3 CMS 7 LTS - What’s New
  212. 212. Änderungen im System Symfony/Console im CommandController (3) <?php namespace AcmeDemoCommand; use TYPO3CMSExtbaseMvcControllerCommandController; class MyCommandController extends CommandController { public function myCommand() { // Table rendern $this->output->outputTable(array( array(’Bob’, 34, ’m’), array(’Sally’, 21, ’f’), array(’Blake’, 56, ’m’) ), array(’Name’, ’Age’, ’Gender’)); // Selektieren $colors = array(’red’, ’blue’, ’yellow’); $selectedColorIndex = $this->output->select(’Please select one color’, $colors, ’red’); $this->outputLine(’You choose the color %s.’, array($colors[$selectedColorIndex])); [...] TYPO3 CMS 7 LTS - What’s New
  213. 213. Änderungen im System Symfony/Console im CommandController (4) [...] // Abfrage $name = $this->output->ask(’What is your name?’ . PHP_EOL, ’Bob’, array(’Bob’, ’Sally’, ’Blake’)); $this->outputLine(’Hello %s.’, array($name)); // Prompt $likesDogs = $this->output->askConfirmation(’Do you like dogs?’); if ($likesDogs) { $this->outputLine(’You do like dogs!’); } // Progress $this->output->progressStart(600); for ($i = 0; $i < 300; $i ++) { $this->output->progressAdvance(); usleep(5000); } $this->output->progressFinish(); } } ?> TYPO3 CMS 7 LTS - What’s New
  214. 214. Änderungen im System Backend Login API (1) Das Backend-Login wurde nun komplett als API realisiert und lässt sich damit selbst per Programmierung ansprechen Grundsätzlich muss man dazu einen sogenannten Login-Provider in der Datei ext_localconf.php registrieren: $GLOBALS[’TYPO3_CONF_VARS’][’EXTCONF’][’backend’][’loginProviders’][1433416020] = [ ’provider’ => TYPO3CMSBackendLoginProviderUsernamePasswordLoginProvider::class, ’sorting’ => 50, ’icon-class’ => ’fa-key’, ’label’ => ’LLL:EXT:backend/Resources/Private/Language/locallang.xlf:login.link’ ]; TYPO3 CMS 7 LTS - What’s New

×