Contao 3.5.0
5 June 2015
Contao version 3.5.0 is now available (major release).
Upgrading to Contao 3.5.0
Contao 3.5.0 can be upgraded to (or installed) using any of Installatron's products. Use Installatron's optional Automatic Update feature to automatically apply Contao updates as new versions are released, or use Installatron's Clone feature to duplicate an existing Contao install to test the 3.5.0 upgrade prior to applying it live. Get started managing your Contao installations with Installatron
What's New in Contao 3.5.0
111 tickets and pull requests have been completed during the 4 months of development and the following testing period.
Long Term Support
- Contao 3.5 is an LTS version, which is supported at least until November 2016.
- It supersedes the current LTS version Contao 3.2, which now enters its 6 months transition phase during which only security related issues will still be fixed.
New Features
- PHP 5.4: The minimum PHP version required to run Contao has been raised to PHP 5.4. In this course, all templates have been adjusted to use short open tags (<?= $name ?> instead of <?php echo $name; ?>), which are available by default as of PHP 5.4.
- Image meta data in themes: Theme exports now also contain the image meta data, which includes the name of the image, the image caption and the coordinates of the important part.
- Select multiple checkboxes: You can now select multiple checkboxes at once in "edit multiple" mode by holding down the Shift key while clicking.
- Windows compatibility: Contao now uses the DIRECTORY_SEPARATOR constant when replacing file paths with the PHP function str_replace() to ensure maximum compatibility with Windows systems.
- Database key length: It is now possible to specify the length of a database key.
- Initial versions: Contao now also shows initial versions in the "latest changes" section of the back end, which do not yet have an editing history.
- Change password: The new front end module "change password" adds a form to the page, which members can use to change their password. Other than in the "personal data" module, the "change password" module will also ask for the old password.
- Picture insert tag: Analogous to the {{image}} insert tag, there is now also a {{picture}} insert tag, which allows to insert responsive images.
- Compare templates: Thanks to Yanick Witschi, there is now an option to compare customized templates with their original or another template of the same group.
- Cache tuning: An additional lookup file now allows to map any request for the empty domain to a cached page, independent of which languages the visitor's browser accepts. In the past, only a limited mapping was possible.
- Performance optimization: The performance of Contao when rendering websites with a lot of news or events could be notably improved by selectively tuning the database queries. In addition, lazy loading of the content elements by means of closures could decrease the RAM demand of the listing modules.
- Newsletter recipients: It is now possible to move or copy newsletter recipients from one channel into another. At that, the stored double opt-in data will be deleted and the status will be set to "added manually".
- Arrow brackets in user input: In Contao 3.5, we have adjusted the user input validation so arrow brackets are only removed if they are part of an HTML tag. A regular usage, e.g. as comparison operator, is now possible.
- Improved error handling: The front end error handling has been standardized and now the 404 page is always generated if an event or a news item is not found or if an invalid page number or date is entered. This also applies if a page is called via its numeric ID instead of its alias (e.g. 44.html instead of home.html). Rendering the error page is meant to help avoid duplicate content in this case.
- Duplicating multiple items: It is now possible to duplicate multiple items in the back end list view.
- Hidden system files: The new release standardizes the handling of hidden system files beginning with a dot (e.g. .htaccess, .git or .svn). These files are now ignored everywhere in Contao.
- New hooks: The following hooks were added: compileArticle, postAuthenticate, newsListCountItems, newsListFetchItems, getPageStatusIcon
- Updated plugins: The following plugins were updated: Respimage to version 1.3.0, jQuery to version 1.11.2, jQuery UI to version 1.11.4, Mediaelement.js to version 2.16.4, Colorbox to version 1.6.0, HTML5Shiv to version 3.7.2, DropZone to version 3.12.0, ACE-Editor to version 1.1.8
- IDE compatibility: The Contao source code has been highly optimized regarding its IDE compatibility, so now it is possible to click almost every class, method or property to directly jump to its declaration.
Full Changelog
- Updated: Updated TinyMCE to version 4.1.10.
- Updated: Updated respimage to version 1.4.0.
- Updated: Updated jQuery to version 1.11.3.
- Updated: Updated Colorbox to version 1.6.1.
- Fixed: Consistently sanitize the names of uploaded files (see #7852).
- Fixed: Fixed loading cached pages with both a mobile and desktop layout (see #7859).
- Fixed: Omit the index.php fragment if the request string is empty (see #7757).
- Fixed: Adjust the edit URLs in the versions menu in "edit multiple" mode (see #7745).
- Fixed: Do not cache the login module if there is an error (see #7824).
- Fixed: Correctly handle encrypted rows (see #7815).
- Fixed: Only create a new version in the personal data module if something actually changed (see #7415).
- Fixed: Also fire the "modifyFrontendPage" hook when loading from cache (see #7457).
- Fixed: Fixed several minor issues with the registration module (see #7816).
- Fixed: Update the revision date if a member updates their personal data (see #7818).
- Fixed: Do not allow to restore versions in the back end user settings (see #7713).
- Fixed: Use the timestamp of an element to initialize its first version (see #7730).
- Fixed: Hide the "edit header" button if there are no editable fields (see #7770).
- Fixed: Make the "form_submit" templates overwritable again (see #7854).
- Fixed: Correctly inherit empty page permissions (see #6782).
- Fixed: Decode the GET parameters before setting them in the Input class (see #7829).
- Fixed: Fixed the "specified value 't' is not a valid email address" error (see #7784).
- Fixed: Correctly set data- or ng- attributes in the widgets (see #7772).
- Fixed: Correctly display the headline in the template editor (see #7746).
- Fixed: Make Validator::isValidUrl() RFC 3986 compliant (see #7790).
- Fixed: Fixed switching between the page and file picker in the URL wizard (see #5863).
- Fixed: Make the "the old password is incorrect" message translatable (see #7793).
- Fixed: Fix copying multiple items in parent view (see #7776).
- Fixed: Disable the "compare template" icon for folders (see #7802).
- Fixed: Fix the field order in the template diff view (see #7808).
- Fixed: Validate the coordinates in the Image::setImportantPart() method (see #7804).
- Fixed: Only add order fields of binary fields in the DCA extractor (see #7785).
- New: Select multiple checkboxes by holding down the SHIFT key (see #7781).
- Changed: Show versions even if there is only one (see #7730).
- Fixed: Loosely check the suhosin.memory_limit setting (see #7696).
- Improved: Support specifying the database key length (see #7771).
- Improved: Check for ASCII strings in the utf8_romanize() function (see #7748).
- Changed: Controller::replaceInsertTags() is now public static.
- Fixed: Restore the removed attributes of the "picture_default" templates (see #7752).
- Changed: Moved the insert tag logic into a separate class.
- Improved: Show the upload limits in the file manager (see #7389).
- Improved: Also export the image meta data when exporting themes (see #7480).
- Improved: Improve the model registry (see #7725).
- Changed: The templates now use short open tags.
- New: Add a front end module to change the password (see #7418).
- Changed: Allow to copy and move newsletter recipients across channels (see #7570).
- New: Added the "newsListCountItems" and "newsListFetchItems" hooks (see #7694).
- New: Added the "compileArticle" hook (see #7686).
- New: Added the "picture" insert tag (see #7635 and #7718).
- Changed: Stop ignoring notices by defaut now that the error level is configurable.
- Updated: Updated respimage to version 1.3.0.
- Updated: Updated jQuery UI to version 1.11.4.
- Updated: Updated mediaelement.js to version 2.16.4.
- Updated: Updated Colorbox to version 1.6.0.
- Updated: Updated jQuery to version 1.11.2.
- Updated: Updated HTML5Shiv to version 3.7.2.
- Updated: Updated DropZone to version 3.12.0.
- Updated: Updated the ACE editor to version 1.1.8.
- Improved: Also convert image links in TinyMCE to {{file}} insert tags (see #7581).
- New: Support copying multiple records in the list view (see #7499).
- Fixed: Do not strip opening arrow brackets when stripping tags (see #3998).
- Improved: Simplify the moo_mediabox templates (see #7521).
- Changed: Always return the model in the File and Folder classes (see #7567).
- Fixed: Consistently ignore hidden system files (see #7536).
- New: Make the calendar model available in the templates (see #7388).
- Changed: Render the 404 page if the request contains an invalid date format (see #7545).
- Changed: Always render the 404 page if a news/event/FAQ alias is invalid (see #7238).
- New: Prevent calling a page via ID if there is a page alias (see #7661).
- Improved: Use closures to lazy-load content elements in the news/event list (see #7614).
- Improved: Optimized the database queries (see #7450 and #7710).
- Improved: Add a log entry if a back end user switches to another account (see #7441).
- Improved: Optionally use the ProxyRequest class in the automator (see #7681).
- Fixed: Add a unique index for member usernames, too (see #7701).
- New: Add a diff view for custom templates (see #7599).
- New: Added the "postAuthenticate" hook (see #7493).
- New: Pass $arrFields as fourth argument in the "prepareFormData" hook (see #7693).
- Fixed: Return a boolean value in the *User::authenticate() method (see #7497).
- New: Make count, page and keywords available in the search module (see #7577).
- New: Added the "getPageStatusIcon" hook (see #7556).
- Fixed: Improve the cache handling for empty URLs (see #7618).
- Improved: Improved the IDE compatibility (see #7634).