Fixed #12244: Improve locallangXMLOverride feature (Thanks to Steffen Gebert), this...
[Packages/TYPO3.CMS.git] / NEWS.txt
1 ************************************************************************
2 CHANGES & IMPROVEMENTS between TYPO3 4.2 and 4.3
3 (for technical details see ChangeLog)
4 ************************************************************************
5
6 General
7 =======
8
9         * TYPO3 requires PHP 5.2 now
10
11         * Support for OpenID auhentication with a new system extension for both FE and BE.
12           Any user with a valid OpenID identifier may log in when the OpenID authentication
13           is successful.
14
15         * The JavaScript framework ExtJS was integrated as common widget library. This
16           collection offers developers an easy but powerful option to create nice looking
17           user interfaces by reusing predefined objects. For example, ExtJS supports grid
18           views, dialog windows and dynamic panels. It is currently used in the TYPO3 Core
19           for the dialog showing that a session in the backend has expired and for the
20           new recycler.
21
22         * The JavaScript libraries are updated to prototype 1.6.0.3 and script.aculo.us 1.8.2.
23
24         * Integration of RSA Authentication Service: Using a the public-key cryptography allows
25           to transfer sensitive data over a secure channel, even if the website does not support
26           HTTPS. This feature allows to store password data as salted hash value. The RSA
27           authentication service can be used in frontend and backend by enabling the system
28           extension rsaauth.
29           Note: The service requires either the openssl PHP extension, or the openssl binary.
30
31         * Integration of PHP Autoloader:  This feature allows to have only those files in memory
32           that are really required for an accordant application. The performace improves
33           dramatically. The PHP files are looked up using a registry file returns a simple array
34           mapping PHP class names to accordant file names:
35                 + t3lib/core_autoload.php contains all classes in t3lib/tslib or the TYPO3 Core
36                 + [extension_key]/ext_autoload.php contains all classes of that TYPO3 extension
37
38         * Extbase and Fluid integration: Extbase and Fluid are backports from FLOW3 to bring MVC
39           and a very flexible templating engine to TYPO3 4.x. Extbase can be used in TYPO3 4.3 for
40           frontend extensions only. The techniques used by these two packages are the same as in
41           FLOW3/TYPO3 5.0 - thus, it's possible to develop future-proof extensions now and migrate
42           them easily when TYPO3 5.0 is released.
43
44         * Cookies of frontend and backend sessions can now be used with flags to protect the session id.
45           These settings for 'cookieSecure' and 'cookieHttpOnly' can be defined in the Install Tool:
46                 + cookieSecure: Indicates that the cookie should only be transmitted over a secure HTTPS
47                   connection from the client. If set to 1 (force HTTPS), the cookie will only be set if
48                   a secure (HTTPS) connection exists - use this in combination with lockSSL since otherwise
49                   the application will fail and throw an exception! If set to 2, the cookie will be set in
50                   each case, but uses the secure flag if a secure (HTTPS) connection exists.
51                 + cookieHttpOnly: When enabled the cookie will be made accessible only through the HTTP
52                   protocol. This means that the cookie won't be accessible by scripting languages, such as
53                   JavaScript. This setting can effectively help to reduce identity theft through XSS attacks
54                   (although it is not supported by all browsers).
55
56 Backend
57 =======
58
59         * Extension Manager: You can now set a new option "excludeFromUpdates" in every
60           extensions' ext_emconf.php array. This way, it is a) not shown in the
61           list of extensions to update and b) is shown a exclamation mark in order to
62           prevent updates for this extension. This is very useful if you made local changes
63           to an extension and don't want any admin to overwrite them.
64
65         * The TypoScript editor "t3editor" was enhanced with code-completion. Now you get
66           context-sensitive suggestions about possible properties while entering TypoScript.
67
68         * The recycling of deleted records is improved since most elements were not removed
69           physically in TYPO3. The recycler offers the possibilities of cleaning up the garbage
70           collection and to restore data again. Based on an ExtJS interface it's possible to
71           get a quick overview of the accordant elements, filter the resultset and execute the
72           desired actions. This new feature is the modernized and core-specific version of the
73           kj_recycler extension, that has been available in the TER for years now.
74
75         * The permissions on file operations can now be set on a per-group basis. New back-end
76           users now don't have any file permissions by default, since this has moved to back-end
77           user groups and will apply automatically for each new group being created.
78           The default settings for new groups are the following:
79                 + Move, delete, rename and create new directories
80                 + Upload, copy, move, delete and rename files
81                 + Unzip files
82
83         * The popup telling an user that his session has expired was replaced by a dialog window.
84
85         * The workspace selector has been turned to an item in the toolbar menu.
86
87         * It is now possible to disable versioning and workspaces by un-installing the extension
88           "version" which is no longer a required extension. If "version" is not installed all
89           versioning and workspace related controls are removed from the backend user interface.
90           Not installing "version" will improve the backend performance because a lot of database
91           operations are not needed anymore.
92
93         * The elements shown when creating new content elements (like "regular text element" etc.)
94           can be configured, modified and extended by Page TSconfig "mod.wizards.newContentElement".
95
96         * The tables shown when creating new records in the Web>List module are grouped by their scope
97           or extension now. The order can be modified by Page TSconfig "mod.wizards.newRecord.order".
98
99         * Elements on each table in the Web>List module can be collapsed or expanded now.
100           In the view showing a single table with many elements, a pagination helps to
101           get through them.
102
103         * Uploading files is now available with an optional Flash Uploader which shows a 
104           nice widget with information on the upload progress. It makes it possible to select
105           multiple files at once. Enable the Flash Uploader by checking the appropriate checkbox 
106           in the User Setup, reload the Backend and make sure that your browser has the 
107           latest version of Flash (Flash v9+) installed.
108
109         * It is possible now to temporarily lock down the backend for system maintenance. Editors
110           will see an overlay with an message notifying them that the backend is locked. When the
111           lock is removed, editors can continue without having to re-login.
112           The lock is enabled by placing this file:
113                 typo3conf/LOCK_BACKEND
114
115         * The backend gateway for manipulating files (uploading, renaming, copying) TCEfile is now
116           separated from the file typo3/tce_file.php and put in a new file and class in
117           typo3/classes/class.typo3_tcefile.php. There is now also a new AJAXid (TYPO3_tcefile::process)
118           to use this functionality in AJAX-based environments as well.
119
120         * The backend login page is now localized. The language for the login page where no
121           user-defined language is available yet is detected by the preferred browser language. If you
122           have previously changed the login labels via $TYPO3_CONF_VARS['BE']['loginLabels'] then
123           these will be used, however it is recommended to overload the XML file with your own XML file
124           and $TYPO3_CONF_VARS['BE']['XLLfile']['EXT:lang/locallang_login.xml']. These will only be used
125           once you remove the altered "loginLabels" configuration option from typo3conf/localconf.php.
126
127         * The extension "gabriel" has been integrated into the TYPO3 core as system extension "scheduler".
128           It provides a centralized way of defining scheduled, recurring tasks, with a convenient
129           interface to manage them (BE module). The aim is to have a single cron job which just launches
130           the Scheduler, which in turn takes care of executing all due tasks.
131           Extension developers are strongly encouraged to turn their existing cron scripts
132           into Scheduler tasks.
133
134         * The appearance and behavior of localized records in the backend on copy, move and deleting
135           records has been improved. Actions performed to a record in the default language will now
136           concern the accordant localization records as well.
137
138         * TypoScript conditions have been possible in the frontend for a long time. This release adds
139           support for conditions in PageTSconfig and UserTSconfig so the same functionality is available
140           in both the frontend and backend now. Due to performance reasons evaluation of TSconfig
141           conditions can be disabled in the Install Tool with $TYPO3_CONF_VARS['BE']['TSconfigConditions].
142
143 Frontend
144 ========
145
146         * A new content element "MEDIA" that allows one to easily handle audio and video data has been integrated.
147           The element is delivered with default players which can be configured for specific demands. Besides that,
148           theese players can be replaced by others if required.
149
150         * The message log of the admin panel will report failures to set the locale
151
152         * Integrated functionality of extension jb_status_code into core:
153           It is now possible to specify a redirection code (301, 302, 303 or
154           307) together with a domain redirection in a sys_domain record.
155
156         * Added option named "additionalAbsRefPrefixDirectories" for Frontend in the Install tool.
157           This option is useful if the installation uses non-TYPO3 applications and links to
158           them from extensions. Earlier TYPO3 prepended only media/, typo3conf/ext/ and
159           fileadmin/ directories automatically with config.absRefPrefix. Using the new variable
160           administrators can tell TYPO3 to prepend also other directories inside the site root
161           with config.absRefPrefix.
162
163         * Added new Install tool option named "dbClientCompress". This option will
164           enable MySQL compression for network traffic. This is useful if
165           MySQl is not on the same host as the web server. Do not use this option if MySQL
166           is on the same host because it will only slow down the process. However if MySQL
167           is on another host, this option may improve performance significally.
168
169         * CSS styled content was split into separate files for each compatibility versions of TYPO3
170           (3.8, 3.9, 4.2 and current). When including the static template of css_styled_content,
171           a specific version must be chosen (also see Compatibility below).
172
173         * The GIFBUILDER now supports automatic line breaks by defining a maximum width of the
174           element to be rendered. The new TypoScript properties are "breakWidth" and "breakSpace".
175
176         * Image rendering now cuts off the profile data of images by default to reduce file sizes.
177           This behaviour can be modified or disabled by changing [GFX][im_stripProfileCommand] in
178           the install tool or by setting the TypoScript property "stripProfile" on IMAGE objects.
179
180         * cHashes now use the full md5 hash instead of the short hash previously calculated by
181           t3lib_div::shortMD5(). This reduces the risk of duplicate hashes, which could happen
182           in large web sites. However this may cause compatibility issues with some extensions
183           (see Compatibility below).
184
185 Compatibility
186 =============
187
188         * A deprecation log has been introduced to track calls to deprecated/outdated methods
189           in the TYPO3 Core. Developers have to make sure to adjust their code to avoid using
190           this old functionality since deprecated methods will be removed in future TYPO3 releases!
191           The information can be found in /typo3conf/deprecation_[hash-value].log
192           The install tool has a setting "enableDeprecationLog" that allows one to disable the logging of
193           deprecation messages since the file might grow quite fast depending on the extensions installed.
194
195         * If you use the caching framework it is not possible anymore to query the cache tables directly.
196           Any extension that needs the new caching framework has to make sure that it is initialized by
197           calling t3lib_cache::initializeCachingFramework().
198
199         * The simulateStaticDocument functionality (URLs like "MyPage.13.0.html" instead of "index.php?id=13")
200           was extracted and put to a separate system extension "simulatestatic".
201
202         * The frontend editing functionality was extracted into a separate system extension "feedit".
203
204         * The help modules "about" and "cshmanual" were extracted into separate system extensions with the same name.
205
206         * As mentioned in "Frontend" CSS styled content has been split into several files.
207           The update wizard can switch the versions of the static includes by refering to
208           the TYPO3 compatibility version.
209
210         * As mentioned in "Frontend", cHash use full-length md5 now. This has an impact on extensions
211           that make use of the cHash, like RealURL or the Crawler. Make sure to update those extensions
212           to their latest version.
213
214         * As mentioned in "Backend", the extension "version" is no longer "required" and therefore it
215           will not  be installed by default anymore if you update an existing site. If you use
216           versioning and workspaces you have to re-enable it after the update by installing it with
217           the extension manager or with the update wizard in install tool.
218
219         * The DOM object identifiers in Inline Relational Record Editing (IRRE) have been changed
220                 from "data[<pidOfParentRecord>][<parentTable>][<parentId>][<parentField>]..."
221                 to "data-<pidOfParentRecord>-<parentTable>-<parentId>-<parentField>..."
222
223 Development
224 ===========
225
226         * t3lib_div::makeInstance now supports singletons. To mark a class as a
227           singleton it must implement the t3lib_singleton interface.
228
229         * A new caching framework has been added. It allows extensions to store temporary data
230           transparently to different cache back ends (database, file system or memory).
231           Due to its flexibility the caching framework is a bit slower than the native database
232           caching, therefore it is disabled by default. If you use a multi-machine environment where
233           you can distribute the caches over multiple servers the caching framework can be
234           way faster than the native native database caching.
235
236         * Frontend plugins now can convert themselves from USER to USER_INT on the fly. This
237           is useful for plugins who can disallow caching using a TSConfig option (for example,
238           tt_news). Earlier plugins had to use $GLOBALS['TSFE']->set_no_cache(), which caused
239           huge performance problems. Now plugin simply need to call
240           $this->cObj->convertToUserIntObject() and return immediately without generating any
241           content.
242           Objects can find their current execution mode by calling $this->cObj->getUserObjectType().
243           This function can return either tslib_cObj::OBJECTTYPE_USER (if object runs as USER)
244           or tslib_cObj::OBJECTTYPE_USER_INT (if object is running as USER_INT). Here the code
245           example:
246                 function main() {
247                         ....
248                         if (!$this->conf['allowCaching'] && $this->cObj->getUserObjectType() == tslib_cObj::OBJECTTYPE_USER) {
249                                 $this->cObj->convertToUserIntObject();
250                                 return '';
251                         }
252
253         * Class tslib_eidtools is enhanced with new methods for eID/AJAX applications:
254                 static function initLanguage($language = 'default');
255                         Creates $GLOBALS['LANG'] for the given language
256                 static function initTCA();
257                         Loads 'ctrl' sections for TCA tables from all installed extensions
258                 static function initExtensionTCA($extensionKey);
259                         Similar to initTCA() but loads the table only for the given extension
260
261         * Class t3lib_extMgm has new methods to enhance palettes:
262                 t3lib_extMgm::addFieldsToAllPalettesOfField($table, $field, $addFields, $insertionPosition = '');
263                         Adds new fields to all palettes of an existing field.
264                 t3lib_extMgm::addFieldsToPalette($table, $palette, $addFields, $insertionPosition = '');
265                         Adds new fields to a palette.
266
267         * A random byte generator has been added to t3lib_div::generateRandomBytes() which can
268           be used for cryptographic operations in the TYPO3 Core or in any other extension.
269
270         * A page rendering class (t3lib_PageRenderer), that relies on a template file, has been added for frontend and
271           backend disposal. The rendering object allows one to manage JavaScript and stylesheet data inside a document
272           structure. Besides that there are hooks to compress and concatenate JavaScript and stylesheet information.
273
274 TypoScript changes
275 ==================
276
277         * New properties to handle JavaScript and stylesheet data for rendering a page are available. It is possible to
278           define the place inside a document for inclusion (e.g. header and footer), wrap them with conditional comments,
279           and many more possibilites (see TSref PAGE.includeCSS and PAGE.includeJS for more details).
280
281         * Custom sub categories can be used in TypoScript constants like the following:
282                 #customsubcategory=limits=LLL:EXT:devlog/locallang.xml:limits
283
284 Database changes
285 ================
286
287         * The database tables cache_hash, cache_pagesections and cache_pages have been
288           changed due to a move to the new caching framework.
289
290         * Reference indexes storing table names have been extended from 40 to 255 chars
291
292         * The database table pages_language_overlay was extended by several fields to
293           support an alternative URL or a shortcut dependent on localization.
294
295         * The field t3ver_label has been extended from 40 to 255 chars in the tables
296           pages, pages_language_overlay, sys_template and tt_content.
297
298 DBAL
299 ====
300
301         * ...
302
303
304 Backend skin
305 ============
306
307         * ...
308
309
310 Speed improvements
311 ==================
312
313         * TYPO3 4.3 is the first TYPO3 version that is faster than it's predecessor. This has
314           achieved by constantly monitoring performance impacts of all changes in the core.
315
316         * PHP classes for frontend plugins are now loaded only if they are used to render
317           content by enabling the "includeLibs" property also for USER objects in TypoScript.
318           In the past, all available class files for frontend plugins were loaded so this new
319           feature increases performance by reducing memory consumption.
320
321         * TYPO3 now enables client caching of JavaScript, CSS and image files by using .htaccess
322           files in various directories. This may cause problems if mod_expires is not enabled
323           in the Apache configuration. See the FAQ section in the INSTALL.txt about disabling
324           these files if necessary.
325
326         * There's a new $EM_CONF parameter called "doNotLoadInFE". When set it will prevent
327           TYPO3 from adding the extension's ext_localconf.php and ext_tables.php to the
328           temp_CACHED files when rendering frontend content. Technically this is done by
329           adding an additional list of extensions to localconf.php ($TYPO3_CONF_VARS['extListFE'])
330           which contains only a subset of all installed extensions. This list is only used
331           when rendering frontend content. Since this list is shorter
332           than the list of all extensions this will result in 2 new temp_CACHED_FE* files which are
333           smaller than the files containing all extensions settings. This can save some
334           precious milliseconds when delivering content.
335
336         * The amount of database queries is reduced using the "treelist cache". Thus, the frontend
337           renders a bit faster due to this optimization.
338
339
340 Important bugfixes
341 ==================
342
343         * ...
344
345 Currently unsupported
346 =====================
347
348         * Missing features concerning the disposal of Inline Relational Record Editing (IRRE)
349                 -> Workspaces and Versioning are currently not supported
350                 -> FlexForms using the TCA type 'inline' are currently not supported/tested
351                 -> Import/Export (sysext tx_impexp) might not work correctly in special cases