The TYPO3 community, contributors, and the release team prepared a new snapshot of the current development of TYPO3 CMS 6.2: beta6.
What happened since beta5?
Third party library updates
- Flush opcode caches while saving PHP files (#55252, #56546, #56554). This should fix the problem with PHP 5.5 and the opcache (i.e. in the Install Tool) as mentioned in the beta5 release notes. Please test this new feature if it works as expected in your environment!
- TYPO3 now only sets a frontend user cookie (fe_session) if there is session data or the user is logged in (#55549, #55845). This minimizes traffic, allows better optimization of reverse proxies (i.e. varnish). It also obsoletes the setting "dontSetCookie". Read more about it in the NEWS.md file.
- css_styled_content is now selected to be installed in a new empty installation by default (#56292).
- tt_content "categories" field is now an exclude field, so it can be disabled for editors (#53454).
- Updated normalize.css to version 3.0.0 (#55316).
- Updated Swift Mailer to 5.0.3 (#55745).
Package Management / Extension Manager
- Benni worked out a more robust solution of adding plugins to content rendering TypoScript (#55942). This basically fixes the issues with extension plugins not working in the frontend due to the TypoScript not being present (i.e. indexed search #55174, felogin #55557), depending on the loading order of the extensions. We didn't want to make indexed search or felogin dependant of css_styled_content.
- Improved handling of the TYPO3 version which was making it impossible to install extensions compatible with "6.2.0" in a beta release (#23902).
- The composer names of the system extensions were changed from "typo3/cms/*" to "typo3/cms-*" to be standards compliant (#53753). See the Upgrade Notes on how to deal with this change if you are upgrading from a previous beta.
- Extension Manager performance: Speed up updating the extension list by improving some SQL indexes (#56354) and by doing more intelligent queries (#55820). Great improvement by Jost Baron: Thanks!
- Fixed Extension Upload ending with a PHP Error (#53210).
Install Tool and Upgrade Wizards
We worked on streamlining and optimizing the Upgrade Wizards, which will be important for many of you upgrading from 4.5 (or later versions) to 6.2. Please give them a new try now!
- There are now two Wizards surrounding all other Upgrade Wizards to update the database schema (SQL) (#53890): One creates new fields and tables at the start, the other applies required changes at the end. This now makes it possible to do the whole Upgrade process without switching between "Database Analyser" and "Upgrade Wizard". Just as we recommend it, using only the Upgrade Wizard! Great achievement brought to us by Stephan Großberndt!
- File Abstraction Layer Upgrade Wizards: The TCA-FAL migration for tt_content (#53845, #53891), the RTE Magic Image FAL migration wizard (#53846) and the Wizard for migrating FAL references (#53650) were all enhanced.
- "Update Wizard" was renamed to "Upgrade Wizard" (#55970).
- Removed outdated Wizards (#54930).
- The menu items of the Install Tool were reordered for better usability (#56497).
- Install Tool has a new check for correct system locale settings (#55721). Great contribution by new contributor Zbigniew Jacko, thanks!
Our favorite topic "Performance" got yet more attention in the area of micro-optimization and general improvements since beta5. We will now try to focus on bigger aspects (i.e. the class loader and alias and it's caching, package management). There are some WIP patches already pending in these areas, and there is a list created by Steffen Ritter with some findings (#56307
). Start your profiler on your site, benchmark and bring us your findings and improvement ideas!
The "intval to (int)" patch which was included in beta5 (#54265
) broke some things, which are all solved. I.e. the levelmedia was not working correctly (#55706
), pagetype was not respected in page cache (#55753
) and there were some other regressions in ternaries discovered and fixed along the way (#55923
Opening Web>List on a page with many large tables was improved with a SQL change (#55891
Performance improvements were added in GeneralUtility::getFilesInDir() (#54095
), which is now covered with unit tests to validate the optimizations (#55762
). We also improved performance of the GeneralUtility::revExplode method (#55564
) and fixed some regressions found after merging this solution (#55838
Optimized GeneralUtility::trimExplode() (#55198
), \TYPO3\CMS\Lang\LanguageService (#56109
), GeneralUtility::rmFromList (#53677
), isPackageActive() (#55749
), heavily used path methods in GeneralUtility (#54525
) and ArrayUtility::sortArraysByKey() (#55899
). Reduced redundant calls to getClassSchema() in DataMapper::thawProperties() (#55991
). We now use PHP native htmlspecialchars_decode() when possible (#54777
). And we use stat() instead of filemtime + filesize (#55574
). Kudos for the tremenduous work done by Michiel Roos
on lots of these issues!
Security / CSRF protection
Helmut did a great job together with Alexander Schnitzler in improving CSRF protection of our backend, which was already announced in this public news
. Many pieces of this work were already merged in beta6.
This also lead to improved usability of session logouts when working with multiple tabs open (#56453
). This is especially important now that the CSRF tokens are validated virtually everywhere in the backend.
One goal was to reduce the amount of entry scripts to the system, to make sure we have more control over the process.
Some preparation work: Switch info and func module to mod dispatcher (#55672
). Cleanup ext:frontend web_info module routing (#55797
), form sysext entry script cleanup (#55669
), making sure M parameter is first in URL (#56404
Then came the main part, which in parts are breaking changes:
- Added CSRF protection to mod.php (#55509).
- Added CSRF Protection for tce_file.php (#55515).
- Added API to CSRF protect Ajax calls in Backend (#56345).
- Protect core Ajax calls against CSRF (#56356).
- Added a new way to register a TCA wizards (#56268). This will be documented as it's finished here: #56279.
- Removed old wizard scripts (#56454)
We used the new way to register the wizards: colorpicker (#56436
), rte (#56437
), forms (#56438
), table (#56435
), list (#56434
), edit (#56272
), add (#56432
) and backend_layout (#56471
Some fixes were incorporated as they popped up: Fix Redirect after switch-to-user (#56364
). Fix module access regressions (#56359
). Do not save failed token messages in session (#56357
). Initialize FormProtectionFactory later in alt_doc.php (#55856
- We've added two Signals in EditDocumentController after init (#56381) and after preInit (#56195). This will be used for example by gridelements.
- DatabaseConnection (TYPO3_DB) now has a central method where all queries go through (#55769)
- If you register backend modules using ExtensionUtility::registerModule, you can now omit the parameter $controllerActions if it's just an empty array (#54869).
- Many calls inside the persistence layer (Typo3DbBackend) now use proper API of the DatabaseConnection (#55571). This is part of a yet not finished ongoing effort to make the Extbase persistence faster (see also #55360 and #55167).
- Since beta5 (#55569), flexform data was not loaded anymore in Extbase plugins. This was solved in #55687.
- A fallback "default" case was added to the SwitchViewhelper to make it complete (#49371).
- Breaking change: f:format.date formats the date to system default (#55790).
Frontend and TypoScript
- Minor breaking change: In alpha1 we've added a categories-based menu. The TypoScript "tt_content.menu.20.9" was renamed to the more speaking "tt_content.menu.20.categorized_pages" (#54611). If you have already used that in your templates, you need to adapt it.
- Added CSS libs functionality for page renderer - like we already had for JS libs - to be included before any other CSS (#55474). Can be used in TypoScript with the page.includeCSSLibs setting.
- Content Element "Table" did not allow multiple css classes like "class1 class": now it does (#55470).
- Stan made the RTE Link Wizard (#55951) and Image Wizard (#55946) styling more consistent.
- Fixed buggy folder tree icons in the RTE Image Wizard (#53259).
- Make the RTE work in frontend again (#56027) and fixed a compatibility between ExtJS 3.4.1 and IE 11+ (#56192).
Backend User Interface
- Added mapping between file extensions .pps, .ppsx to powerpoint icon (#53833).
- Button style :active and :hover (#56480).
- Unify UL/OL standard (#55819) and .list-unstyled for ol & ul (#55834, #56062).
- File>List: use t3-table & semantic HTML in localization (#55810, #56020).
- Web>List: use t3-table & tree sprites (AbstractTreeView) (#55784).
- EXT: tstemplate - use treeline sprite icons (#56229).
- Forms: Input/textarea :focus style (#55901).
- Fixed the bug when adding new image to content element broke the layout (#56018).
- Scheduler: Added (>) icon to execute button (#55789).
File Abstraction Layer
- FAL functions are now used for css_styled_image textpic rendering (#53764).
- RTE MagicImage should use FAL processing API (#51807).
- Added a FileCollectionRegistry, allowing other types of "file collections" to be registerd, a feature enabling extensions to provide DAM like selections (#53910).
- The drag+drop dialog is now disabled if the FAL driver is set to readonly (#56443).
- In beta5 we introduced the concept of a "default storage" (only one can be set). The new TCA setting "maximumRecordsChecked" allowed only one storage to be set as default. But the usability was not good, as the user got no information that the checkbox could not be set. This alert was now added in beta6 (#55590).
- Added IconUtility::getSpriteIconForResource() which also provides a hook for extensions to manipulate the icons based on whatever they like (#56211).
- Fix a fatal error in the inline "upload" functionality for editors (#55628).
- Fix StorageRepository::findByStorageType (#56400).
- Respect all filemounts in file collection (#55414).
- Update file type on mimetype change (#54305).
- Indexer does not update the FileObjects (#53772).
- Load file meta data properties before return (#56035).
- StorageRepository fails to load storages (#55992).
- Prevent double slash in isWithin check (#55740).
- FAL links in RTE not transformed when link has rel attribute (#54944).
- RTE Linking with file upload fails when no folder is selected (#48512).
- Pass path instead of object to fileExistsInFolder (#55763).
- Make FileExtensionFilter case insensitive (#55359, #55614).
- Filename sorting in filelist was broken (#56128).
- Using files in eID resulted in fatal error (#54232).
- Ignore empty inputs when creating new folders (#56034).
Workspaces / IRRE / DataHandler fix Workpackage
Olly is working hard on the DataHandler. In preparation, a framework for frontend rendering functional tests was created (#55882
) and the DataHandler functional tests were streamlined (#56029
Then the DataHandler IRRE functional tests were extended with many more situations (#56072
). Olly integrated and optimized the IRRE CSV Functional Tests (#56132
). After that, a set of functional test cases were added to DataHandler (workspace) (#55563
) and some more: for discarding created elements (#56179
), frontend rendering (#56104
), discarding vs. deleting workspace changes (#56111
A bug with moving content records to a different page and change sorting was fixed (#55573
To fix a bug when copying or localizing sys_categories, we introduced a new TCA feature, MM_oppositeUsage property (#56061
). This will be documented in the TCA reference (https://review.typo3.org/#/c/27918/).
Also our testing framework (unit and functional testing) was improved:
- Use absolute path to check for extensions (#56204).
- Add additional configuration for functional tests (#56187).
- Use environment variable for functional test bootstrap (#56182).
- Use Backend User fixture for DataHandler tests (#56070).
- Reduce memory footprint of unit tests (#55850).
Importer / Exporter Workpackage
Marc-Bastian Heinrich also got some tasks completed from the job of making the Importer / Exporter work with relations and FAL. The basis are the test cases:
- Avoid to get a file object with the uid zero (#55530).
- Limit the exported record fields in impexp (#55625).
- Use DataHandler testing framework for simple import test (#55664).
- Remove class loader in functional test tear down (#56086).
- Extend functional tests with linked paths (#55111).
Package Management / Class Loader / Cache
- Cache non existing classes (#53962).
- Class Loader optimisation (#55037).
- Class loader: avoid loading classes multiple times (#55904).
- Allow multiple aliases for a class (#55897).
- Fix fatal errors upon package installation (#53795).
New contributor Andreas Fernandez fixed a bug in that the Install Tool fatals with Oracle databases (#56253
) and a bug where quoteFieldNames() returned an empty string (#56306
). Great work! There is still an ongoing work in progress to stabilize the DBAL extension with the current 6.2 release. Xavier is active and we have gained some awareness of the pending problems, so we expect it to be rock stable until final release!
- Removed security_level option from Authentications, deprecated since 4.7 (#56256).
- Tymek removed some empty classes implementing AbstractTreeView (#55847) and renamed classes with the same name "localPageTree" (#55876). The goal is to cleanup the treeView implementation mess (or at least make it less messy), see #55830. Make sure you are not using any of these classes in your extensions, as this is a breaking change (documented in NEWS.md).
- Removed rollover (.RO) functionality from TMENU (#55751).
- Removed some leftovers from the ancient "condensed mode" backend configuration (#56479).
- Removed old class files from ext:openid (#55808), ext:recycler (#55804), ext:t3editor (#55792).
- Remove outdated $CLIENT[FORMSTYLE] (#56254).
- ContentObject instances are not reused anymore (it used to be a pseudo-singleton) (#55941).
- Cleanups and fixes in the ElementBrowser (#56406, #56289, #55985, #55765 and #55939).
- Moved TCEForms JS Code to external file - part 1 (#46357, #56221).
- Replaced JscharCode() with GeneralUtility::quoteJSvalue() (#55009).
- There were some duplicated Exception codes (unix timestamps) in our codebase, which were cleaned up in #52294. Thanks Przemyslaw Krukowski for the help!
- Improved compatibility with PHP Strict Standards in the Core API (#47983).
Other important fixes:
- Issues with the optimizations in addToAllTCAtypes from beta5 were fixed (#55932, #56080).
- Adding new records in edit mode was broken since beta4: Fixed (#56248)!
- The new responsive sourceCollection width not usable out of the box, and this was fixed (#53169). Great first time contribution to the Core by Pascal Hinz!
- Fixed several PHP warnings in the frontend when logging out, in, submitting forms etc (#55696, #56508, #55434, #56508)
- Package Management: Fixed a Fatal error when adding composer packages to Packages folder in site root (#55754).
- Fixed error "#1361915596: The array $GLOBALS['TYPO3_LOADED_EXT'] may not be modified" in the configuration module (#54449)
- Spelling of namespace \TYPO3\CMS\Tstemplate was corrected, which fixes a problem in links between TSOB and Template Analyzer (#55764).
Downloading and Upgrading
If you have tried some earlier snapshot of the 6.2 development branch (i.e. some alpha or beta) here are some tips when upgrading to this latest beta:
- Download 6.2 beta6 from the Download Page.
- Uncompress into your old Document Root.
- Switch the typo3_src symlink to the new package
- Use the Install Tool:
- "Important Actions" and delete the whole cache content (make sure this deletes the whole typo3temp/Caches/* files and also the content of Extbase Reflection Caches - do it manually if not working otherwise!)
- "Upgrade Wizards": Walk through all Upgrade Wizards
Additional note in beta6: The composer names of the system extensions were changed to be standards compliant (#53753
). This means that your PackageStates.php needs to be reconstructed in case you tried a previous beta. After clearing typo3temp/Cache, make sure you deactivate and activate some extension in the extension manager in order to have the PackageStates file rewritten.
Keep in mind that the exact same steps are required when upgrading from a previous version of TYPO3. Note that you might need to upgrade the extensions to the latest state before upgrading the Core!
MD5 sum of packages
3617dab77b15491a596cf4cfbbf70234 typo3_src-6.2.0beta6.tar.gz 15d4f93645877a7c23695c3f41174d6f typo3_src-6.2.0beta6.zip
Found a bug? Report it!
If you try out the beta and find some bug or issue with it, don't hesitate to report back to us. Our issue tracking system is Forge
. To fill in a report, you must register as an user on typo3.org first. Then Login on Forge. Take a look at other reports as those linked in this release notes. Make sure to do a search first to see if there is already a report of the issue you have, before reporting the issue again. Do that by adding a filter "Subject" to the issue tracking filtering system or by using the "Search:" field on the top corner. If you are reporting some new issue, make sure you fill in all required fields:
- A speaking and concise subject briefly describing the problem (a phrase like "I just found a bug in TYPO3!" is not descriptive enough!)
- TYPO3 Version: specify the release of TYPO3 where the problem occurs: "6.2" in case you are trying this beta.
- Category: Try to find a matching category, it helps us filter the issue. In case of doubt which category to use, just leave it blank.
- In the text part of the issue, try to describe exactly what the problem is. A part with "How to reproduce" helps the developers understanding when the bug appears exactly.
You might want to join IRC on Freenode, channel #typo3-cms and get our attention on your bug or if you have questions if what you found is indeed a bug or some misconfiguration.
Our next meet-up will be the Code Sprint in Venlo / Netherland
from 10th to 12th of March. This will be the last code sprint before the final release.
If it turns out necessary, we have the option to release a new beta7 at 13th of March right after the Code Sprint. This will then be the final Beta-Release. The week after that, we will have a Release Candidate (either Tuesday or Thursday). And then finally, at 25th of March, the long waited 6.2.0 first stable release! I can't wait for it, can you?
Let's get it on!