Release Notes » History » Revision 2

« Previous | Revision 2/18 (diff) | Next »
Ernesto Baschny, 2011-01-18 16:45


TYPO3 4.5 Release Notes

System Requirements

The system requirements are the same as 4.4:

  • PHP 5.2.x-5.3.x
  • MySQL 5.0.x-5.1.x

Note on safe_mode: We still support safe_mode in TYPO3 4.5, but won't be able to fix further bugs related to safe_mode being enabled (e.g. image generation). System Requirements for TYPO3 4.6 will (most probably) be PHP 5.3 and safe_mode disabled. Thus users wanting upgrade to 4.6 (End of 2011) will have to make sure safe_mode is off, else they can still stick to 4.5 (with LTS) for three years.

Changes and improvements

This will list all changes and improvements between TYPO3 4.4 and 4.5. For technical details see ChangeLog included in the typo3_src package.


  • HTML5 is the new TYPO3 Backend doctype. This allow the Core and also Extensions to make use of newer browser features. Of course we will still maintain compatibility with IE6, having some graceful fallback where necessary.
  • UTF8 by default. This means that new installations will be automatic UTF8. Keep in mind that we will be deprecating all other charsets in the release of 4.5, but still support those charsets. 4.7 or maybe even 4.6 will be the first "UTF-8 only" release. When upgradeing from older releases to 4.5, you will have to specifically specify set $TYPO3_CONF_VARS['BE']['forceCharset'] and $TYPO3_CONF_VARS['BE']['setDBinit'] in your localconf.php. An Upgrade Wizard will help you with that.
  • Deprecated the usage of ImageMagick 4 and 5. This means that with 4.5 (and in the long term support) we will still support that ancient versions, but will drop support for it starting in 4.6 already. This will enable us to fix bugs in the graphical engine faster and more efficiently add new features to it.
  • Added Khmer language (Cambodian).


A new Linkvalidator module was added as a new system extension. It is able to check all kind of links: internal, external and file links. It looks inside headers, bodytext and other configured fields. It comes with a just-in-time checker and is also able to do the checks via a scheduler task. Development of this module is done through the Linkvalidator team.

Mail API

A whole new mail API based on SwiftMailer was added to replace t3lib_htmlmail. t3lib_htmlmail won't be removed, it is just marked as "deprecated":

  • The new mail API can be configured through the install tool (for example to send mails via SMTP) is now being used directly by t3lib_utility_mail::mail(), which means that all mail sending that uses that API (core and extensions) will use the new settings and start sending RFC conforming mails (16591).
  • This new mail API can now be configured to transport the send e-mails to a file instead of sending them out. The file can be useful on development machines or when you want to debug the mail sending routines (16610): Install tool > All configuration >
    TYPO3_CONF_VARS['MAIL']['transport'] = 'mbox'

New Extension Manager (EM)

This module is a brand new all-in-one Extension Manger based on an ExtJS UI.

The extension managers classes were first completely refactored while keeping all the functionality of the existing EM. This work was the base upon which a new and modern EM was created. It is based on ExtJS and ExtDirect and provides a smooth way for new users to manage the extensions.

Amongst the old known features it comes with a couple of new possibilities which were never possible before in the old extension manager:

  • Manage your extensions from TER through the Extension Managers UI (create / delete / transfer extensions keys)
  • Support for multiple TER repositories at once: Create your own repository and check out

  • A improved version of _.htaccess (former misc/advanced.htaccess) provides more accurate and up-to-date information and is a real working sample on how to setup your Apache to serve TYPO3 pages. This setup is now also used in the introduction and dummy packages
  • The Install Tool used to silently fail when there was an error in some statement of the DB "COMPARE". Now these errors are reported in the returned form.
  • Added an easy way of creating news that are displayed below the login form in the /typo3 login screen. Just create records of type "System News" in your root folder.
  • When TYPO3 runs with two different domain names for the FE and the BE, it is now possible to set accordingly different cookie domains using $TYPO3_CONF_VARS['FE']['cookieDomain'] and $TYPO3_CONF_VARS['BE']['cookieDomain'].
  • The media element now has a core wizard for rewriting URLs. This allows the user to copy the URL from browser (eg a youtube URL like and use
    it in the media element as URL. Currently supported platforms: youtube, dailymotion, sevenload, vimeo, clipfish, google, metacafe, myvideo, liveleak and veoh. This is the result of a Google Summer of Code student's work.


Frameset is gone

The frameset which used to lay out the backend was removed. The new backend works using the ExtJS viewport, providing an easy, fast and unified interface to manipulate the content of the different panels. See this buzz article for some technical details on how this works. As a side effect, the navigation tree can be resized at will.

  • The new ExtJS pagetree uses a new API for "trees" and makes use of ExtJS and ExtDirect.

Grid view / Backend layout

The Grid View + wizard enables the backend layout to be adapted to the frontend look and feel (16396). This feature was a development from the T3UXW09 and was finished for 4.5. Just create records of type "Backend layout", using the available Wizard to create the grid you want. Then go to the Web>Page module as usual and select the Grid for your page. There is a video demonstrating it in action

Live search

Added a Live search with auto-complete / suggest to replace the old "search box". This is also a result from the T3UXW09.


A new file uploader "Plupload" was added, it can be used in the Fileadmin area. This uploader uses HTML5, Gears, Flash and a fallback to HTML4, so that all browsers will find a way of uploading a file in the most confortable way. This also fills the gap between HTML4 and non-Flash enabled devices, which can now use HTML5 Upload flexibility. Needs to be enabled in the User Settings!

  • There is a new available task to update the extension list through the scheduler.
  • "Create multiple pages" Wizard improved: The user can decide the type of each page created, and it allows to create more than 9 pages at once.
  • t3editor now also enables syntax highlighting when editing files in fileadmin, for example when editing HTML, SQL, XML files. We also updated the underlying codemirror to the latest version (0.9).
  • All system extensions from typo3/mod were moved to real system extensions. These modules are:
    • Extension Manager (required)
    • List module (required)
    • Filelist module
    • Info module
    • Access module
    • Workspace module
      Make sure you visit the Update Wizard to enable those extensions after upgrading to 4.5. You are also now able to uninstall those extensions so that not even the entry in the module menu is left.
  • DB check -> page tree submodule was removed (module lowlevel).
  • "Clearing cache" now is logged to the Admin Tools > Log.
  • Pages of type "Shortcut" can now also link to the parent page, not only to the first or a random subpage.
  • A hook now allows postprocessing of filelist and TCEforms files operations (15192 and #15221). Typical use-cases:
    • Allow editors to upload any picture (e.g., 10 Mpixels) as they don't know how to resize the pictures or do not have the software
    • Prevent fileadmin to be overflooded with huge pictures which will never be used in their original size
    • Automatically resize "huge" pictures after the upload
      Extension using it already: image_autoresize
  • New TS config option to disable the "Show secondary options" checkbox. In User-TS, you can set:
    options.enableShowPalettes=0 to see this feature in action. Default is still "1" like it used to be.
  • When copying or translating content elements, the copy / translation will now default to be "hidden". This eases work of translators, in that the "[Translate to language]" elements do not appear in the frontend right away. In order for editors not to loose track of copied elements the default for the checkbox "show hidden elements" is now on. This behaviour can be modified by adding this to typo3conf/extTables.php:
    $TCA['tt_content']['ctrl']['hideAtCopy'] = FALSE;
  • Implemented a new condition for the current page record in PageTS. This allows settings for example like this:
    mod.SHARED.colPos_list = 0
    [page|layout = 1]
    mod.SHARED.colPos_list = 1,0
  • Allow adding query parameters (&...) to internal links (e.g. in fields with browse_links and images). This used to be a feature of RTEhtmlarea links only and is now available on every link wizard.
  • The former "Shortcuts" feature (in the toolbar, where one could make shortcuts to different backend modules and pages) was renamed to "Bookmarks" to avoid the confusion with the "Page Shortcuts". This change was also reflected in UserTS options (See 16252).
  • Page module will provide a direct link to the list module when accessing SysFolders.

Skin / Backend UI

  • Updated ExtJS used by the backend to version 3.3.1

  • A sprite generator was added. This allows you to create your own sprite files, also core can generate the files if some new icons were added. sprites.css now contains the autogenerated sprites. This includes some last missing icons. The core is now able to auto-generate sprites from icons if configured to do so. Default setup is to use the available sprites that ship with TYPO3. Using this handler you can advise the SpriteManager to create a sprite out of all custom icons (shipped via extensions), and use this one for displaying custom icons (speeding up the backend). This works transparently: extension developers can continue using "single" icons. Set:
    $TYPO3_CONF_VARS['BE']['spriteIconGenerator_handler'] = 't3lib_spritemanager_SpriteBuildingHandler'
  • TCEforms now also uses the sprites in a lot more places, providing more consistent icons matching our skin.
  • The recycler was refactored and has now the same skin as the rest of the BE.
  • ExtJS tabs are now styled the "TYPO3-way"
  • Added current flags from famfam in t3skin in a nice sprite. This means you can now choose between much more flags for your sys_languages.
  • Access Lists settings in be_groups configuration are now rendered as checkboxes providing a more useable way of manipulating this huge list of options.
  • Implement new form layout and labels for tt_content as result of T3UXW09 (16031)
  • Implement new form layout and labels for pages as result of T3UXW09 (16015)
  • The checkbox to clear a field in TCA was removed and moved into the input field as a small "x" on the right (16006). The same checkbox used to select the default date on a date field, this can now be done in the calendar.
  • Integrated a generic notification methods to show windows and dialogs in the backend based on ExtJS (15745). Just access them with TYPO3.Window and TYPO3.Dialog.
  • RTEhtmlarea uses these new methods for creating dialogs (15879)
  • Introduced a new CSH API function and make use of it in TCEforms (15990). You will notice that there are no longer CSH icons in the forms, but underlined labels, with mouse over tool tips.
  • Nicely styled page + navigation tree with drop shadows (on browsers that support it, i.e. FF3, Chrome, Safari) (16032, 16409)
  • Optimizations to the skinning and usability general (16421, 11957, 16298, 16452, 16453),
  • Add docheader to "About modules" screen to provide a consistent look (16425)
  • Backend and sys_language tables now use a collection of flags from FamFam as a sprite. (15666, 15668)
  • New style for error messages (15991)
  • We introduced Modernizr in the Backend to be able to provide graceful fallbacks in browsers that doesn't speak "CSS3" (16403)
  • Optimized the CSH pop-ups (16080, 16105, 16122)
  • Fixes in the new layout of TCEforms for pages and tt_content (16065, 16151, 16094), and enhanced the cosmetics, e.g. the thumbnails in "Images" field are now below the field (16111)
  • Support for TCA date ranges in the ExtJS date picker (16393)
  • Lots of tiny improvements made possible by the newly formed Skin team.
  • The frontend Admin Panel was styled and has a nice look and feel now (and more fitting to the new backend skin).

Administration / Customization

  • Individual FlexForms fields can now be enabled / disabled via TSConfig and group access lists (16334)
  • In the configuration module the array keys are now sorted alphabetically (16116)
  • Checkbox at the bottom of the modules are now hideable (15645): * New User TSconfig options: options.file_list.enableDisplayBigControlPanel, options.file_list.enableDisplayThumbnails, options.file_list.enableClipBoard * New Page TSconfig options: mod.web_list.enableDisplayBigControlPanel, mod.web_list.enableClipBoard, mod.web_list.enableLocalizationView
  • TypoScript included from files (via <INCLUDE_TYPOSCRIPT ...>) can now be edited directly through the backend in the t3editor (16183)
  • Scheduler: The cron syntax interpreter of the Scheduler was entirely refactored. It now supports the full range of cron syntax features as can be found in Unix manual pages.


  • RTEhtmlarea works on Google Chrome 7 (15863)
  • Added a word count in the status bar (16047)
  • Added option in the RemoveFormat plugin to remove typographical punctuation, which might come from Copy&Paste from MS-Word (15885)
  • Skype URLs are now preserved when adding them as "external links" (e.g. skype:someone?call) (5666)
  • Added new option "paste as plaintext" which works on all browsers except Opera. When the toggle is ON, any paste action is intercepted and clipboard content is pasted as plain text (15499)
  • "Clean paste" feature allows the user to paste content "unformatted", "structure only" or "fully blown" (8349)
  • Added a general element properties editing dialogue (2474), where you can add "id", "name", "lang" and other universal attributes to any tag in your content.
  • New options to configure RTE size/resize (16344, 15236)
  • Allow CSS-styles for tables without having to activate blockstyle (7872)


  • We can proudly present the new Workspace Module (16247), completely based on ExtJS and powered by Extbase / Fluid, as the first core backend module to use this framework. Development of this module done through a team which will work on the issues reported to their forge tracker.
  • Disabled the "draft workspace" and migrate it to a real workspace (16225)
  • Migrate regular workspaces to custom-stage workspaces (16310)
  • Implemented Inline Relational Record Editing (IRRE) in Workspaces (16374)
  • There is a new Scheduler task for the automatic publication of workspaces (14994). If a publication date has been set for a given workspace, it will be published the next time the Scheduler task runs. Note that automatic "un-publication" still does not work. Replaces non-working CLI script "typo3/mod/user/ws/cli/ws_cli.phpsh".

Install tool

  • Added a pre-check for required php-extensions in the 1-2-3 installer (15075)

Extbase / Fluid


  • There is a new setting that shows all SQL queries in debug (15425): $TYPO3_CONF_VARS['SYS']['sqlDebug'] = 2;
  • Contrib libraries can be replaced now via hook (15218). This allows to test with updates of these libraries. Demo extensions are available.
  • Catch all ExtDirect Exceptions and show them in the DebugConsole. It now also allows you to call debug() (15513).
  • DebugConsole now also catch console-calls from Javascript if no console is available. This allows eg debug prints in browsers having no console like the IE
  • ExtDirect is available in the frontend now (15754). See
  • Added a mode to debug the backend (15966)
  • Created a new API for Trees and ContextMenus which will later be used by all trees in the backend (e.g. a future ExtJS page tree) (16033)
  • Created a new abstract class t3lib_message_abstractmessage (15989) to be used as a super-class over flashmessages and other kinds of messages to come.
  • Added hook into the marker replacement functionality for BE templates (16026)
  • Allow to override a XML file in $GLOBALS['TYPO3_CONF_VARS']['SYS']['locallangXMLOverride'] using the "real" .xml filename (instead of pseudo .php file) (15942)
  • Moved TCA definitions of "pages" from typo3/sysext/cms/ext_tables.php to t3lib/stddb/tbl_pages.php (15988)
  • Extbase with new features:
    • Dependency Injection
    • Dispatcher Refactoring & Completely re-done Configuration Manager
    • QueryResult refactoring (needed for Fluid Widgets)
  • Fluid with new features:
    • Fluid Widgets
    • Fluid Standalone View
  • Rendering of backend modules got easier, using the PageRenderer's new facility method "render()" (16383)
  • Based on the new tree API we have a new feature called "TCA trees".For example add this to your typo3conf/extTables.php and see it in action in the "Pages" settings (check the fields Access Usergroups and "General record storage"):
    $GLOBALS['TCA']['pages']['columns']['fe_group']['config']['renderMode'] = 'tree';
    $GLOBALS['TCA']['pages']['columns']['fe_group']['config']['treeConfig'] = array(
        'expandAll' => true,
        'parentField' => 'subgroup'
    $GLOBALS['TCA']['pages']['columns']['storage_pid']['config']['type'] = 'select';
    $GLOBALS['TCA']['pages']['columns']['storage_pid']['config']['renderMode'] = 'tree';
    $GLOBALS['TCA']['pages']['columns']['storage_pid']['config']['treeConfig'] = array(
        'parentField' => 'pid'
    $GLOBALS['TCA']['pages']['columns']['storage_pid']['config']['foreign_table'] = 'pages';
    $GLOBALS['TCA']['pages']['columns']['storage_pid']['config']['foreign_table_where'] = ' ORDER BY pages.sorting ASC';
    $GLOBALS['TCA']['pages']['columns']['storage_pid']['config']['size'] = 10;

  • Big refactoring of the cObject classes and better split up (15094)
  • t3lib_div now provides two functions setSingletonInstance and addInstance that will set the objects to be returned by makeInstance (16267). This will allow unit tests to inject mocks into makeInstance. In addition, there now is a function purgeInstances that makes makeInstance return fresh instances (singleton as well as non-singleton).
  • The Unit tests now require version 3.5.6 (and thus PHP 5.3) of the phpunit extension. This version provides a method to determine the path of fixture files, which is used by core unit tests.

TypoScript / Frontend

  • FE login now allows to show the logout form direct after login.
  • Added easy interface to integrate lightbox style image enlargement in the frontend ((15689). Just set some constants in the "CONTENT" part of css_styled_content and your images will get attributes added that are needed for lightbox JS frameworks to work out of the box.
  • stdWrap now has a new feature: .numberFormat (13815)
        lib.myPrice = TEXT
        lib.myPrice {
            value = 0.8
            numberFormat {
                decimals = 2
                dec_point = ,
            noTrimWrap = || $|
        # Will result in "0,80 $" 
  • GIFBUILDER has a new feature: ELLIPSE (2049). Example:
        file  =  GIFBUILDER
        file  {
            XY  =  200,200
            format  =  jpg
            quality  =  100
            10  =  ELLIPSE
            10.dimensions  =  100,100,50,50
            10.color  =  red
  • Added a new TypoScript cObject "FLUIDTEMPLATE" (16008). Example use:
    page = PAGE
    page.10 = FLUIDTEMPLATE
    page.10 {
        # the FLUID template, has stdWrap functionality
        file = fileadmin/mytemplates/mytemplate.html
        # setting a specific partials path, usually it's layouts/ underneath the template file
        partialRootPath = fileadmin/partials/
        # setting a specific layout path, usually it's layouts/ underneath the template file
        layoutRootPath = fileadmin/layouts/
        # setting variables that should be available in the fluid template
        variables {
            mytitle = TEXT
   = page:title
  • Added a new TypoScript cObject "SVG", which works on all browsers (15900). It uses svgweb library to provide cross-browser support. Example use:
    page = PAGE
    page {
        config.doctype = html_5
        javascriptLibs.SVG = 1
        10 = SVG
        10 {
            value (
                <rect x="100" y="100" width="500" height="200" fill="white" stroke="black" stroke-width="5px"/>
                    <line x1="0" y1="200" x2="700" y2="200" stroke="red" stroke-width="20px"/>
                    <polygon points="185 0 125 25 185 100" transform="rotate(135 125 25)" />
                    <circle cx="190" cy="150" r="40" stroke="black" stroke-width="2" fill="yellow"/>
            noscript.cObject = TEXT
            noscript.cObject.value = NO SVG rendering possible
            width = 600
            height = 600
  • Added new "radioInputWrap" property to FORM cObject, allowing to put <div>s around individual radio boxes (3613)
  • Added a new page-option to force SSL on a page (15621). This makes extensions like "https_enforcer" obsolete.
  • Add support for RDFa doctype headers (semantic web) (16395)
  • Start to implement stdWrap in all properties to enhance flexibility. Already done in these cObjects: CASE (16187), CLEARGIF (16189), COA (16192), COA_INT (16193), COLUMNS (16190), CONTENT (16191), CTABLE (16196), FILE (16197), FLUIDTEMPLATE (16198), FORM (16295), HMENU (16199), HRULER (16226),
    HTML (16227), IMAGE (16282), IMG_RESOURCE (16283), IMGTEXT (16287), LOAD_REGISTER (16284), MEDIA (16381), MULTIMEDIA (16382), RECORDS (16285). Further additions are planned in beta2 and beta3.
  • typolink now honors secure filelink configuration, so you can create jumpurl secured links using the RTE (16027)
  • stdWrap.age now differentiates between singular/plural (1333) (oldest fixed feature request, from 2005)
  • compatVersion = 4.5: css_styled_content's sitemap/menu of subpage now have a new class "csc-menu-current" for the currently active page (6147)
  • Added a config option (TypoScript) to disable the preview info box on certain page types (16133). E.g.
     config {
        disableAllHeaderCode = 1
        disablePreviewNotification = 1
  • New options noRescale for IMG_RESOURCE, allowing to provide unscaled high resolution images, useful for example when transforming the rendered HTML into a PDF (11177)
  • matchCondition now also recognizes iOS and Android (RFC 16878)

Database API / DBAL

  • Prepared queries are now part of the TYPO3 database API (15457). The API is mostly based on PDO's method naming and currently supports SELECT queries. TYPO3 will progressively use this new database API which is cleaner and quicker when using DBAL. Extension authors are encouraged to use it in their own extensions.
  • DBAL now supports "FIND_IN_SET()" (14818) function and maps it correct functions in case usage under AdoDB. Using FIND_IN_SET in listQuery() will provide performance improvements in all areas, as this is used in several places (backend and frontend, for example for checking the group list permissions).
  • Output of SQL parser when dealing with prepared queries is cached for enhanced performances. To activate this caching if you don't have a memcached server:
        $TYPO3_CONF_VARS['SYS']['useCachingFramework'] = 1;

    In order to have a much higher cache hit ratio, you should use one or more memcached servers. To activate this enhanced caching, use:
        $TYPO3_CONF_VARS['SYS']['useCachingFramework'] = 1;
        $TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['dbal'] = array(
            'backend' => 't3lib_cache_backend_MemcachedBackend',
            'options' => array(
               'servers' => array('localhost:11211', 'otherhost:11211'),



  • Added "*compress data*" options to DbBackend of the Caching framework (15141). Enable it like this:
       $TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pages'] = array(
            'frontend' => 't3lib_cache_frontend_VariableFrontend',
            'backend' => 't3lib_cache_backend_DbBackend',
            'options' => array(
                'cacheTable' => 'cachingframework_cache_pages',
                'tagsTable' => 'cachingframework_cache_pages_tags',
                'compression' => TRUE,
  • Some often used functions of t3lib_div were speed improved.
  • All the stdWrap additions and optimizations also improved the performance of rendering: The general stdWrap method now processes only existing properties in a very small loop and returns fast if there is nothing to do. New additions of stdWrap also take care not to call the stdWrap function in vain (if no stdWrap property is set for example). FE rendering should boost a lot, while gaining flexibility!
  • Caching Framework:
    • Add scheduler task to execute garbage collection (15306)
    • Implement redis as cache backend (16410)
    • The caching framework was updated to the latest FLOW3 version.
    • The Variable frontend now supports the igbinary serializer which speeds up serialization und unserialization of arrays and objects and leads to smaller cache data. The module will be used transparently, if it is available on the system.
  • Performance improvement for queries that expect just a single result row (11916)
  • Lots of calls to exec_SELECTgetRows have been replaced by exec_SELECTgetSingleRow (16445)

Updated by Ernesto Baschny about 11 years ago · 2 revisions