Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>TYPO3</strong> 4.6 -- rebase<br />
<strong>The</strong> <strong>Innovations</strong><br />
Author: Patrick Lobacher
Past and Present<br />
Releases: <strong>The</strong> Big Picture<br />
2010 2011 2012 2013 2014<br />
4.6 --rebase<br />
4.7<br />
4.4<br />
4.5<br />
LONG TERM<br />
SUPPORT<br />
Credits: Xavier Perseguers (http://www.slideshare.net/xperseguers/typo3-46-overview<br />
2/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Common<br />
general changes<br />
3/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
general changes<br />
From now PHP is assumed 5.3.<br />
Older versions of PHP are NOT supported anymore!<br />
<strong>The</strong> PHP setting magic_quotes_qpc is deprecated and should be set to “Off”<br />
position. <strong>The</strong> Reports module is used indicates if “On”.<br />
<strong>The</strong> PHP setting safe_mode is deprecated and should therefore be set to<br />
“Off” position. <strong>The</strong> Reports module is used indicates if “On”.<br />
<strong>The</strong> MS Internet Explorer 6 is NOT supported anymore in the backend!<br />
ImageMagick versions are less than 6 depracated.<br />
<strong>The</strong> “old” extension manager is “deprecated” and<br />
can not be used any longer.<br />
4/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
FORM<br />
New Wizard and new FORM cObject<br />
5/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
FORM Content Element<br />
New extension system for the generation of forms:<br />
“form” - based on ExtJS and Extbase<br />
Must first be installed<br />
(including static template)<br />
6/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
FORM Content Element<br />
7/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
FORM Content Element<br />
Creation of the form drag and drop<br />
11 basic elements / 4 predefined elements<br />
One content element<br />
8/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
FORM Content Element<br />
Drag and Drop left to right<br />
Preview of Form on the right<br />
Edit the fields by icons<br />
9/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
FORM Content Element<br />
Settings fields are managed under the “Options” Index-tab<br />
Here, the label and the attribute can be set separately<br />
10/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
FORM Content Element<br />
It may be added to any number<br />
validation rules for each field.<br />
Each validation may have own<br />
custom configurations<br />
11/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
FORM Content Element<br />
It may be added to any number of filters<br />
for each field<br />
Each filter can have its own individual<br />
configurations<br />
12/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
FORM TSCONFIG<br />
Extensive configuration options<br />
via TSconfig (UserTSconfig and PageTSconfig)<br />
Default for “New Entry”<br />
Form Wizard settings to adjust the Wizards<br />
mod.wizards {<br />
newContentElement.wizardItems {<br />
forms.elements {<br />
mailform {<br />
tt_content_defValues {<br />
bodytext (<br />
enctype = application/x-www-form-urlencoded<br />
method = post<br />
prefix = tx_form<br />
)<br />
}<br />
}<br />
}<br />
}<br />
}<br />
13/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
FORM cOBJ<br />
<strong>The</strong> FORM cObj is configured by TypoScript<br />
<strong>The</strong>se following objects exists:<br />
FORM<br />
HIDDEN<br />
RESET<br />
BUTTON<br />
IMAGEBUTTON<br />
SELECT<br />
CHECKBOX<br />
OPTGROUP<br />
SUBMIT<br />
CONTENT<br />
OPTION<br />
TEXTAREA<br />
FIELDSET<br />
PASSWORD<br />
TEXTLINE<br />
FILEUPLOAD<br />
RADIO<br />
14/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
FORM cOBJ-Example<br />
lib.form = FORM<br />
lib.form {<br />
method = post<br />
layout {<br />
radio (<br />
<br />
<br />
<br />
<br />
)<br />
}<br />
10 = FIELDSET<br />
10 {<br />
legend.value = Name<br />
10 = SELECT<br />
10 {<br />
label.value = Title<br />
10 = OPTION<br />
10 {<br />
data = Mr.<br />
selected = 1<br />
}<br />
20 = OPTION<br />
20 {<br />
data = Mrs.<br />
}<br />
30 = OPTION<br />
30 {<br />
data = Ms.<br />
}<br />
40 = OPTION<br />
40 {<br />
data = Dr.<br />
}<br />
50 = OPTION<br />
50 {<br />
data = Viscount<br />
}<br />
}<br />
20 = TEXTLINE<br />
20 {<br />
label.value = First name<br />
}<br />
30 = TEXTLINE<br />
30 {<br />
label.value = Last name<br />
}<br />
}<br />
20 = FIELDSET<br />
20 {<br />
legend.value = Address<br />
10 = TEXTLINE<br />
10 {<br />
label.value = Street<br />
}<br />
20 = TEXTLINE<br />
20 {<br />
label.value = City<br />
}<br />
30 = TEXTLINE<br />
30 {<br />
label.value = State<br />
}<br />
40 = TEXTLINE<br />
40 {<br />
label.value = ZIP code<br />
}<br />
}<br />
30 = FIELDSET<br />
30 {<br />
legend.value = Payment details<br />
10 = FIELDSET<br />
10 {<br />
legend.value = Credit card<br />
10 = RADIO<br />
10 {<br />
label.value = American Express<br />
name = creditcard<br />
}<br />
20 = RADIO<br />
20 {<br />
label.value = Mastercard<br />
name = creditcard<br />
}<br />
30 = RADIO<br />
30 {<br />
label.value = Vista<br />
name = creditcard<br />
}<br />
40 = RADIO<br />
40 {<br />
label.value = Blockbuster Card<br />
name = creditcard<br />
}<br />
}<br />
20 = TEXTLINE<br />
20 {<br />
label.value = Card number<br />
}<br />
30 = TEXTLINE<br />
30 {<br />
label.value = Expiry date<br />
}<br />
}<br />
40 = SUBMIT<br />
40 {<br />
value = Submit my details<br />
}<br />
}<br />
Example: Payment Form (http://forge.typo3.org/projects/typo3v4-form/wiki/Payment_Form)<br />
15/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
FORM cOBJ-Manual<br />
Weitere Infos bzgl. des FORM cObj finden sich im:<br />
Wiki unter http://forge.typo3.org/projects/typo3v4-form/wiki und im<br />
Manual im Verzeichnis typo3/sysext/form/Documentation/Manual/en/<br />
Beispiele finden sich unter: typo3/sysext/form/Documentation/Tests/<br />
16/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
TSCONFIG<br />
New settings for the backend<br />
17/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
PAGE TSCONFIG<br />
Übersetzungen können nun im List-Modul ausgeblendet werden<br />
Im „Localization View“ sind diese aber nach wie vor sichtbar.<br />
mod.web_list.hideTranslations = *<br />
oder<br />
mod.web_list.hideTranslations = list,of,tables<br />
18/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
PAGE TSCONFIG<br />
Im „New Record Wizard“ können nun die Icons<br />
(inkl. Funktion) für „Seite (in)“, „Seite (nach)“ und<br />
„Seite (Position auswählen“) mit dem folgenden<br />
PageTS ausgeblendet werden<br />
mod.wizards.newRecord.pages.show.pageInside = 0<br />
mod.wizards.newRecord.pages.show.pageAfter = 0<br />
mod.wizards.newRecord.pages.show.pageSelectPosition = 0<br />
19/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
FLEXFORMS<br />
Beschreibung und Kurzbeschreibung von<br />
Flexforms können nun via PageTSconfig angepasst<br />
werden<br />
TCEFORM.tt_content.pi_flexform.login {<br />
# Language settings<br />
langDisable = 1<br />
langChildren = 0<br />
}<br />
# Sheet title and descriptions<br />
sDEF {<br />
sheetTitle = New title<br />
sheetDescription = New description<br />
sheetShortDescr = New short description<br />
}<br />
20/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Search in List Modul<br />
Das Suchfeld im List-Modul kann nun analog<br />
um Page-Modul ausgeblendet werden<br />
# Ausblenden der Suchbox im Page-Modul<br />
mod.web_page.disableSearchBox = 1<br />
# Ausblenden der Suchbox im List-Modul<br />
mod.web_list.disableSearchBox = 1<br />
21/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
INSTALL TOOL<br />
Configurations<br />
22/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
INSTALL TOOL<br />
Integration der PEAR-Pakete “HTTP_Request2” und “NET_Url2”<br />
zum besseren Handling von HTTP-Requests<br />
Dadurch neue Optionen im Install-Tool unter dem Schlüssel „HTTP“:<br />
adapter, connect_timeout, timeout, protocol_version, follow_redirects,<br />
max_redirects, strict_redirects, proxy_host, proxy_port, proxy_user,<br />
proxy_password, proxy_auth_scheme, ssl_verify_peer, ssl_verify_host,<br />
ssl_cafile, ssl_capath, ssl_local_cert, ssl_passphrase, userAgent<br />
Die Schlüssel curlProxyServer, curlProxyTunnel, curlProxyUserPass und<br />
curlTimeout sind damit „deprecated“ und verschwinden mit <strong>TYPO3</strong> 4<br />
23/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Install Tool MISC<br />
Die Datei „ENABLE_INSTALL_TOOL“ wird per<br />
Klick direkt unter dem Menüpunkt erzeugt<br />
(und nicht wie früher in den User Settings),<br />
wenn ein Admin das Install Tool vom Backend<br />
aufruft<br />
» schnellerer Zugang zum Install Tool<br />
24/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Install Tool MISC<br />
Die Option [EXT][extCache] hat keinen Wert = 2 mehr –<br />
nur 0 (keine Erzeugung temp_CACHED_... Dateien)<br />
oder 1 (Erzeugung von temp_CACHED_... Dateien)<br />
Die Namen der von <strong>TYPO3</strong> generierten Cookies sind nun<br />
konfigurierbar um Konflikte zu vermeiden: [BE][cookieName] und [FE][cookieName]<br />
Das Backend lässt sich nun über den Schlüssel $GLOBALS[‘<strong>TYPO3</strong>_CONF_VARS’][‘SYS’]<br />
[‘localization’][‘locales’][‘user’] mit benutzerdefinierten Sprachen ausstatten.<br />
25/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
SYSTEM<br />
System-wide changes<br />
26/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
XLIFF SUPPORT<br />
<strong>The</strong> present system for translating “locallang.xml” is neither standardized<br />
nor particularly powerful (eg no plural)<br />
<strong>The</strong>refore, to the Core the XLIFF-Support (XML Localisation Interchange File Format)<br />
was added, which is standardized to one another and allows for features such as<br />
singular / plural.<br />
This parser is also used also in the FLOW3 project. Adjustable via:<br />
$<strong>TYPO3</strong>_CONF_VARS[‘SYS’][‘lang’][‘format’][‘priority’] = ‘xlf,xml,php’<br />
$<strong>TYPO3</strong>_CONF_VARS[‘SYS’][‘lang’][‘parser’] [‘xlf’] = ‘tx_lang_parser_Xliff’<br />
$<strong>TYPO3</strong>_CONF_VARS[‘SYS’][‘lang’][‘parser’] [‘php’] = ‘tx_lang_parser_Llphp’<br />
$<strong>TYPO3</strong>_CONF_VARS[‘SYS’][‘lang’][‘parser’] [‘xml’] = ‘tx_lang_parser_Llxml’<br />
27/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
XLIFF SUPPORT<br />
Datei: locallang.xlf<br />
(Sprachdatei für cms layout)<br />
Übersetzungen in eigenen Dateien:<br />
de.locallang.xlf (Dt. Sprachdatei für cms layout)<br />
<br />
<br />
<br />
<br />
<br />
<br />
Page content<br />
Page content<br />
<br />
<br />
...<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Page content<br />
Seiteninhalt<br />
<br />
<br />
...<br />
<br />
<br />
<br />
28/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
XLIFF SUPPORT<br />
Über die Extension „extdeveval“ kann man locallang.xml Datein<br />
in XLIFF-Dateien umwandeln lassen:<br />
29/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
XLIFF SUPPORT<br />
Translation-Server (basiert auf Pootle) unter<br />
http://translation.typo3.org/<br />
Infos zu Pootle (und zum Übersetzungsprozess) auf<br />
http://wiki.typo3.org/Translations#Using_Pootle<br />
t3lib_div::readLLPHPfile und t3lib_div::readLLXMLfile<br />
Deprecated seit 4.6<br />
Stattdessen soll man die folgende Funktion verwenden<br />
tx_lang_parser_Llxml::($sourcePath, $languageKey, $charset)<br />
30/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
BE acceleration<br />
All jsLib, jsFiles jsFooterFiles and are now combined into a single file<br />
(depending on header and footer).<br />
This reduces the requests on the Web server to 1 / 3.<br />
In the backend using t3lib_PageRenderer:<br />
addJsInlineCode be inflicted inline JavaScripts uncompressed<br />
31/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
FE acceleration<br />
Reduce new routines (can be switched on config.minifyCSS and config.minifyJS)<br />
reduce the file size of files that are integrated via page.includeCSS and page.includeJS.<br />
Individual files can now disableCompression with the option of compression and<br />
excludeFromConcatenation be excluded from the concatenation.<br />
<strong>The</strong>se options appear when includeCSS, includeJSlibs, includeJSFooterlibs,<br />
includeJS and includeJSFooter.<br />
Additionally, the files config.concatenateCss and config.concatenateJs be combined<br />
into one file<br />
If $<strong>TYPO3</strong>_CONF_VARS [FE] [compression level] to a value> 0 is set,<br />
not only minified, but also compresses<br />
32/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
SALTEDPASSWORDS Default<br />
<strong>The</strong> system extension “saltedpasswords” (and “rsaauth”)<br />
are now enabled by default on a new installation<br />
This extension ensures that passwords of front-end and / or back-end users<br />
as a salted hash is stored.<br />
Do not forget to set the following values in the install tool<br />
(or via cables make sure they are set):<br />
$<strong>TYPO3</strong>_CONF_VARS[‘BE’][‘loginSecurityLevel’] = ‘rsa’<br />
$<strong>TYPO3</strong>_CONF_VARS[‘FE’][‘loginSecurityLevel’] = ‘rsa’<br />
33/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Caching FramEwork<br />
<strong>The</strong> caching framework is now stable enough - and is therefore enabled by default<br />
on new installations.<br />
Through the options $ GLOBALS [‘<strong>TYPO3</strong>_CONF_VARS’] [‘SYS’] be [‘useCachingFramework’]<br />
and $ GLOBALS [‘<strong>TYPO3</strong>_CONF_VARS’] [‘FE’] [‘pageCacheToExternalFiles’]<br />
since <strong>TYPO3</strong> 4.6 As a “deprecated” and marked with <strong>TYPO3</strong> from 4.8.<br />
Add a runtime caches (cache_runtime) is based on the TransientMemoryBackend -<br />
to store values and bring back what is needed during a requests often.<br />
Add a PHP code cache (cache_phpcode) is based on the file backend<br />
More info here: http://wiki.typo3.org/Caching_framework<br />
34/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Scheduler Task REcycler<br />
New Task (tx_scheduler_RecyclerGarbageCollection) for the scheduler to clean up old files<br />
that are in the trash (does not work for Windows Server).<br />
35/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Scheduler Task REcycler<br />
New Task (tx_scheduler_TableGarbageCollection) for the scheduler to clean up the database.<br />
Unofficial name of the task is “brandy Hans task scheduler”<br />
(as it was named to the T3BOARD11 bug in the Auction so * gg *).<br />
36/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
MISC<br />
ExtJS is now in version 3.4.0 include<br />
If an extension is to be loaded via the Extension Manager<br />
and it fails (possibly due to firewall settings), then<br />
the associated URL is displayed so you can debug the firewall<br />
and adjust accordingly.<br />
37/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
MISC<br />
ExtJS is now in version 3.4.0 include<br />
If an extension is to be loaded via the Extension Manager<br />
and it fails (possibly due to firewall settings), then<br />
the associated URL is displayed so you can debug the firewall<br />
and adjust accordingly.<br />
38/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
RTE<br />
Changes in htmlarea<br />
39/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
RTE - Togglebutton<br />
RTE.default.buttons.pastetoggle.setActiveOnRteOpen<br />
If this is set, the “Pastetoggle” button is or<br />
default turned on when the RTE loads<br />
RTE.default.buttons.pastetoggle.hidden<br />
If this is set, and the “Pastetoggle” button is active,<br />
the button in the toolbar and context menu disappears<br />
setup.override.rteCleanPasteBehaviour = plaintext<br />
40/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
RTE - SIMPLE Config<br />
First step to simplify the RTE configuration<br />
Homogenization of the configuration (restructuring and<br />
identification of obsolete options “deprecated”<br />
Removal of some already as “deprecated” marked options from the<br />
Default RTE configuration<br />
41/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
RTE - SIMPLE Config<br />
First step to simplify the RTE configuration<br />
Providing an “Install tool upgrade wizard” automatically<br />
obsolete options with the now to replace or be used to UIDs to<br />
identify the pages, which is can not do this automatically.<br />
<strong>The</strong> wizard warns when used obsolete options in external files.<br />
It is one loggin in “deprecation log” - be it because this is<br />
disabled with Paget - Loggin in the BE log also possible:<br />
RTE.default.logDeprecatedProperties.logAlsoToBELog = 1<br />
RTE.default.logDeprecatedProperties.disabled = 1<br />
42/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
RTE - MISC<br />
Improved routine for the removal of the formatting in MS Word content<br />
Removal of the tags: b strong, i, em, p, li, ul, div, link, meta,<br />
span, img, imgdata, f, formulas, lock shape, path, shapetype,<br />
stroke, xml, xml., and more<br />
Distance of the attributes: class, align, style<br />
http://git.typo3.org/<strong>TYPO3</strong>v4/Core.gita=blobdiff;f=typo3/sysext/<br />
rtehtmlarea/htmlarea/plugins/RemoveFormat/remove-format.js;h=66f<br />
68dfea8837bc954cfc68512057eab3de9279b;hp=d358523b15ad39f7dd1a9320<br />
87197f9d6e44bf65;hb=8c5c070e3e52d9d1ac69de8961f9dcc056bb89d5;hpb=<br />
d2dd5029794aa7359816b0779063e85c773bf8f4<br />
43/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Changes in htmlarea<br />
44/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Grouping in the Wizard<br />
Groups in the wizard for creating new records based<br />
on the date extension key<br />
Now it is the TCA-setting “groupname” is grouped according to<br />
(also Extension Cross)<br />
$TCA[‘tx_simpleblog_domain_model_post’] = array(<br />
‘ctrl’ => array(<br />
‘groupName’ => ‘SimpleBlog’,<br />
‘title’ => ‘Simpleblog’,<br />
‘label’ => ‘title’,<br />
...<br />
45/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
USERFUNC with Parameters<br />
TCA-type fields, users can now be given the option parameters with<br />
additional parameters for the userFunc:<br />
‘map’ => array(<br />
‘label’ => ‘Google Map’,<br />
‘config’ => array(<br />
‘type’ => ‘user’,<br />
‘userFunc’ => ‘Tx_MyExt_Tca_Map->render’,<br />
‘parameters’ => array(<br />
‘latitude’ => ‘gps_latitude’,<br />
‘longitude’ => ‘gps_longitude’,<br />
),<br />
)%<br />
46/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Slider in BE (TCEforms)<br />
New wizard “slider” for TCA fields<br />
‘config’ => array (<br />
‘type’ => ‘input’,<br />
‘size’ => ‘5’,<br />
‘eval’ => ‘int’,<br />
‘min’ => 0,<br />
‘max’ => 500,<br />
‘wizards’ => array(<br />
‘_PADDING’ => 2,<br />
‘slider’ => array(<br />
‘type’ => ‘slider’,<br />
‘step’ => 1,<br />
),<br />
Demo-Extension:<br />
http://bugs.typo3.org/file_download.phpfile_id=15528&type=bug<br />
47/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
TYPE Group – COntrols<br />
Way to fields of type “group” hide<br />
(possible values browser, list, upload and / or delete)<br />
‘config’ => array (<br />
‘type’ => ‘group’,<br />
‘internal_type’ => ‘file’,<br />
‘uploadfolder’ => ‘uploads/tx_userdemotcafile’,<br />
‘show_thumbs’ => 1,<br />
‘size’ => 1,<br />
‘minitems’ => 0,<br />
‘maxitems’ => 1,<br />
‘disable_controls’=>’list’,<br />
)<br />
Demo-Extension:<br />
http://forge.typo3.org/attachments/18513/<br />
48/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
BE-search Optimization<br />
For each table must now be specified in the TCA,<br />
which the fields are searched by the back-end search<br />
$TCA[‘pages’] = array(<br />
‘ctrl’ => array(<br />
‘label’ => ‘title’,<br />
‘searchFields’ => ‘title,alias,nav_title,subtitle,url,<br />
keywords,description,abstract,<br />
author,author_email’,<br />
);<br />
With the option ...[‘ columns’] [COLUMN NAME] [‘config’] further restrictions may be specified:<br />
‘search’ => array(<br />
‘pidonly’ => 1,<br />
‘case’ => 0,<br />
‘andWhere’ => ‘CType = \’Text\’’,<br />
)<br />
49/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
BACKEND<br />
Changes<br />
50/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
BE: IDNA vs. PUNNYCODE<br />
In the backend can now be IDNA domains (Internationalizing Domain Names in Applications)<br />
entered in forms (Example www.müller.de example) -<br />
the encoding / decoding to / from PunnyCode domains (www.xn - mller kva.de-made)<br />
with the 3rd party converter “IDNA Convert”.<br />
In this format, the domains are stored as before.<br />
51/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
DEFAULT DIRECTORY SUPPORT<br />
Default directory when you export a t3d file<br />
is now no longer fileadmin / but fileadmin /_temp_ / which is .htaccess protected<br />
so that you can not export the download via HTTP<br />
52/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
MISC<br />
<strong>The</strong> publication date and expiration date of a page<br />
can now be (re) set the minute - so the field is now validated again against “Date Time”<br />
53/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
TYPOSCRIPT<br />
<strong>Innovations</strong><br />
54/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
MISC<br />
<strong>The</strong> publication date and expiration date of a page<br />
can now be (re) set the minute - so the field is now validated again against “Date Time”<br />
55/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
STDWRAP: REPLACEMENT<br />
Neue stdWrap Option replacement zum Suchen & Ersetzen in TypoScript<br />
(inkl. RegExp)<br />
10 = TEXT<br />
10.value = <strong>The</strong>re_is_a_cat,_a_dog_and_a_tiger_in_da_hood!_Yeah!<br />
10.replacement {<br />
10.search = _<br />
10.replace.char = 32<br />
20.search = in da hood<br />
20.replace = around the block<br />
30.search = #a (Cat|Dog|Tiger)#i<br />
30.replace = an animal<br />
30.useRegExp = 1<br />
}<br />
<strong>The</strong>re is an animal, an animal and an animal around the block! Yeah!<br />
56/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
STDWRAP: HASH<br />
Neue stdWrap Option hash zum Anwenden eines Hashing-Algorithmus<br />
(hash hat selbst wieder stdWrap-Eigenschaften)<br />
Liste der möglichen Algorithmen:<br />
http://php.net/manual/de/function.hash-algos.php<br />
10 = TEXT<br />
10.value = joh316<br />
10.hash = md5<br />
bacb98acf97e0b6112b1d1b650b84971<br />
57/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
STDWRAP: ROUND<br />
Neue stdWrap Funktion round zum Runden<br />
Optionen:<br />
decimals (Anzahl der Dezimalstellen, die berücksichtigt werden)<br />
roundType (ceil = Aufrunden, floor = Abrunden, round = Runden)<br />
10 = TEXT<br />
10.value = 1.234567<br />
10.round.roundType = round<br />
10.round.decimals = 3<br />
1.235<br />
58/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
STDWRAP: expandList<br />
Neue stdWrap Option „expandList“<br />
Erweitert eine Liste in der „-“ vorkommt wird zwischen numberFormat<br />
und date einsortiert<br />
10 = TEXT<br />
10.value = 1,3,5-7,10<br />
10.expandList = 1<br />
1,3,5,6,7,10<br />
59/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Stdwrap SELECT<br />
Die Eigenschaften der Funktion „select“<br />
sind nun mit stdWrap ausgestattet:<br />
where, pidInList, uidInList, languageField, selectFields, max,<br />
begin, groupBy, orderBy, join, leftjoin, rightjoin<br />
60/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
CACHE-LifeTime<br />
Über die Option config.cache. können die Start-/ und End-Zeiten<br />
von beliebigen Datensätzen (auf beliebigen Seiten) in die Cache Lifetime<br />
Kalkulation einbezogen werden :<br />
config.cache.all = tt_news:14<br />
Bezieht die Start- und Endzeiten des tt_news Eintrages mit der ID=14 in die Cache Lifetime<br />
Kalkulation aller Seiten ein<br />
config.cache.42 = tt_news:15,tt_address:16<br />
Bezieht die Start- und Endzeiten des tt_news Eintrages mit der ID=15 und des tt_address<br />
Eintrages mit der ID=16 in die Cache Lifetime Kalkulation der Seite mit der UID=42 ein<br />
61/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
ext_typoscript_setup.txt<br />
Die Optionen aus der Datei „ext_typoscript_setup.txt“ (wird verwendet um Extensions mit<br />
TS auszustatten) können nun durch Static-Templates überschrieben werden (vorher wurden<br />
die Datei nach den Static Templates eingebunden)<br />
62/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
STDWRAP MISC<br />
Die stdWrap Funktion case besitzt nun die folgenden<br />
zusätzlichen Werte:<br />
ucfirst (erster Buchstabe gross)<br />
lcfirst (erster Buchstabe klein)<br />
capitalize (Erster Buchstabe jedes Wortes gross)<br />
Die stdWrap Funktion listNum besitzt nun auch den<br />
Wert rand um ein zufälliges Element auszuwählen<br />
page.5 = COA_INT<br />
page.5 {<br />
10 = TEXT<br />
10 {<br />
field = subtitle<br />
stdWrap.listNum = rand<br />
}<br />
}<br />
Die Eigenschaft file.params der Objekte IMAGE und<br />
IMG_RESOURCE besitzen nun stdWrap Eigenschaften.<br />
63/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
STDWRAP MISC<br />
Default CSS aus Extensions (plugin.tx_extkey._CSS_DEFAULT_STYLE...)<br />
kann nun mittels config.removeDefaultCss = 1 global deaktiviert werden<br />
Inkludierte TypoScript-Dateien dürfen nun über 100kB gross sein<br />
64/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
DEVELOPER<br />
New playing fields for Developers<br />
65/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
KOnstruktoren<br />
Konstruktoren werden nur noch über __construct() angesprochen<br />
(und nicht mehr über den Methodennamen der gleich heisst wie der Klassennamen<br />
66/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Nested Subparts<br />
Für die klassische Extensionprogrammierung können nun Marker und (verschachtelte)<br />
Subparts rekursiv ersetzt werden, hierfür wurde eine neue Funktion eingeführt:<br />
substituteMarkerAndSubpartArrayRecursive<br />
$markersAndSubparts = array (<br />
‘###SINGLEMARKER1###’ => ‘value 1’,<br />
‘###SUBPARTMARKER1###’ => array(<br />
0 => array(<br />
‘###SINGLEMARKER2###’ => ‘value 2’,<br />
),<br />
1 => array(<br />
‘###SINGLEMARKER2###’ => ‘value 3’,<br />
)<br />
)<br />
)<br />
67/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
CORE AUTOLOADER<br />
Der Core-Autoloader wurde um die Möglichkeit erweitert, automatisch Klassen zu laden,<br />
die nach dem Extbase-Klassenschema aufzulösen sind:<br />
Dieser Klassenname<br />
Tx_ExtensionKey_Domain_Model_Blog<br />
wird aufgelöst zu<br />
typo3conf/ext/extension_key/Classes/Domain/Model/Blog.php<br />
68/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
CORE AUTOLOADER<br />
Der Core-Autoloader wurde um die Möglichkeit erweitert, automatisch Klassen zu laden,<br />
die nach dem Extbase-Klassenschema aufzulösen sind:<br />
Dieser Klassenname<br />
Tx_ExtensionKey_Domain_Model_Blog<br />
wird aufgelöst zu<br />
typo3conf/ext/extension_key/Classes/Domain/Model/Blog.php<br />
69/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
HOOKS<br />
New Hooks in the Core<br />
70/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
CORE AUTOLOADER<br />
Hook um das Admin Panel durch eigene Funktionen zu erweitern:<br />
[‘tslib/class.tslib_adminpanel.php’][‘extendAdminPanel’]<br />
Hook nach erfolgreichem Login im Frontend und vor einem Redirect:<br />
[‘EXTCONF’][‘felogin’][‘beforeRedirect’]<br />
Hook um das Icon-Overlay im Backend zu überschreiben:<br />
[‘t3lib/class.t3lib_iconworks.php’][‘overrideIconOverlay’]<br />
Hooks vor und nach allen DB-Operationen:<br />
[‘t3lib/class.t3lib_db.php’][‘queryProcessors’]<br />
$hookObject instanceof t3lib_DB_preProcessQueryHook<br />
$hookObject instanceof t3lib_DB_postProcessQueryHook<br />
71/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
GIFBUILDER<br />
Changes and <strong>Innovations</strong><br />
72/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Transparent 32 Bit PNG<br />
Der GIFBUILDER kann nun mit 32 Bit PNG und deren Transparenz umgehen<br />
Dafür gibt es nun den Wert transparent für die Option backColor -<br />
zusätzlich muss erfüllt sein:<br />
png_truecolor muss auf dem Wert TRUE gestellt sein<br />
reduceColors darf nicht gesetzt sein<br />
format darf nicht auf den Wert jpg oder gif gesetzt sein<br />
73/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
EXTBASE/FLUID<br />
Changes and <strong>Innovations</strong><br />
74/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Fundamental<br />
Extbase und Fluid haben nun den Status „stable“<br />
75/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Extbase changes<br />
Die folgenden Zugriffe wurden um nahezu 100% in Hinsicht auf Performance optimiert:<br />
ObjectAccess::getProperty()<br />
ObjectAccess::getPropertyPath()<br />
ObjectAccess::isPropertyGettable()<br />
Man kann nun die PID mittels setPid() für das Domänen-Objekt<br />
im Action_Controller setzen (hat dann Priorität vor<br />
Tx_Extbase_Persistence_Backend->determineStoragePageIdForNewRecord())<br />
Neue Funktion unsetLimit() hebt das Limit im QueryManager auf<br />
76/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
CLI-Interface<br />
Extbase hat nun auch ein CLI-Interface<br />
Damit kann man Extbase von der Kommandozeile aus „bedienen“<br />
Ideal beispielsweise für Scheduler-Tasks<br />
User _cli_lowlevel anlegen<br />
Aufruf: typo3/cli_dispatch.phpsh extbase help<br />
Jede Funktion muss registriert werden (ext_localconf.php):<br />
$GLOBALS[‘<strong>TYPO3</strong>_CONF_VARS’][‘SC_OPTIONS’][‘extbase’][‘commandControllers’][] =<br />
‘Tx_Extbase_Command_HelpCommandController’;<br />
Klassendatei: HelpCommandController.php<br />
class Tx_Extbase_Command_HelpCommandController extends<br />
Tx_Extbase_MVC_Controller_CommandController {<br />
77/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Property Mapper<br />
Der neue Property Mapper (Backport von FLOW3) ist per Default mittels TS zwar deaktiviert,<br />
kann aber über folgendes TS aktiviert werden:<br />
config.tx_extbase.features.rewrittenPropertyMapper = 1<br />
Die @dontvalidate Annotation ist hiermit deprecated und wird ersetzt durch @ignorevalidation<br />
78/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Validator API<br />
Rewrite der Validator API<br />
Wenn der eigene Validator von Tx_Extbase_Validation_Validator_AbstractValidator<br />
ableitet, dann keine Änderung nötig.<br />
Fehler mittels Tx_Extbase_Validation_Error ist deprecated seit 1.4.0 und wird mit 1.6.0<br />
entfernt. Nun wird Tx_Extbase_Error_Result stattdessen verwendet.<br />
Daher soll auch kein getErrors() mehr verwendet werden,<br />
sondern mann muss über validate() gehen<br />
79/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Validator API<br />
Rewrite der Validator API<br />
Abfrage der Validierungsfehler nun über den validationResults ViewHelper:<br />
<br />
<br />
{propertyPath}:<br />
<br />
{error}<br />
<br />
<br />
<br />
80/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
DI in Domain Objects<br />
Es gibt nun auch Dependency Injection innerhalb von Domain Objects<br />
Damit kann man beispielsweise ein Repository innerhalb eines Domänen<br />
Objekts injizieren, welches man dann in einem Getter oder Setter verwenden könnte<br />
81/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
MISC Extbase<br />
Wenn das Domänen-Objekt die Eigenschaft pid hat und diese über einen Getter zugänglich ist, wird der<br />
Datensatz dort (anstelle der newRecordStoragePid) gespeichert (kann also im Controller gesetzt werden)<br />
Das Format (Default „html“) kann nun per TypoScript über die Option format gesetzt werden<br />
Die TypoScript-Option: persistence.storagePid hat nun stdWrap-Properties<br />
persistence {<br />
storagePid.cObject = CONTENT<br />
storagePid.cObject {<br />
select {<br />
pidInList = {$plugin.tx_kecountryactivities.persistence.storagePid}<br />
recursive = 10<br />
selectFields = *<br />
}<br />
table = pages<br />
renderObj = TEXT<br />
renderObj {<br />
82/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
MISC Extbase<br />
Man kann Extbase konfigurieren, die Erzeugung der Parameter für den<br />
Controller und die Action in URLs abzuschalten, wenn diese dem Default<br />
des Target-Plugins entsprechen:<br />
plugin.tx_yourextension {<br />
features {<br />
skipDefaultArguments = 1<br />
}<br />
}<br />
Dies arbeitet natürlich nicht mit switchableControllerActions zusammen, da<br />
diese die Default-Werte per Flexform ändern.<br />
Der UriBuilder verfügt nun über die Methoden getAbsoluteUriScheme() und<br />
setAbsoluteUriScheme()<br />
83/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
FLUID escpape ViewHelper<br />
Der ViewHelper escape ist deprecated und wird in Version 1.6 entfernt -<br />
dafür gibt es an dessen Stelle nun 5 neue ViewHelper:<br />
Funktion: html_entity_decode()<br />
<br />
{text}<br />
Funktion: htmlentities()<br />
<br />
{text}<br />
Funktion: htmlspecialchars()<br />
<br />
{text}<br />
Funktion: strip_tags()<br />
Some Text with Tags and an Ümlaut.<br />
Funktion: rawurlencode()<br />
foo @+%/
FLUID MISC<br />
Der ViewHelper „render“ erhält nun ein Argument, damit man angeben kann, ob ein<br />
Rendering optional ist. Damit erhält man keine Fehlermeldung mehr, wenn im Layout<br />
eine Section gerendert werden soll, die im Template nicht existiert:<br />
<br />
Es gibt nun einen Comment-ViewHelper, mit dem man Teile des Templates<br />
auskommentieren kann:<br />
Das wird nicht gerendert<br />
85/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
FLUID MISC<br />
AbstractViewHelper::$arguments ist kein Objekt mehr sondern ein Array.<br />
Bei Verwendung von $this->arguments->hasArgument() in eigenen ViewHelpern, muss<br />
dies durch $this->hasArgument() ausgetauscht werden<br />
Man kann nun mittels {_all} auf alle Template-Variablen zugreifen, z.B.:<br />
<br />
86/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Fluid RENDERING UND CACHE<br />
Es wurde ein Compile-Schritt zum Parsing-Prozess von Templates, Layouts und Partials<br />
zugefügt Wenn keine kompilierte Cache-Datei existiert, wird diese von Fluid während des<br />
Parsens erstellt.<br />
Der Cache invalidiert wenn sich template/layout/partial geändert haben<br />
(oder die Caches gelöscht wurden). Dies beschleunigt das Rendering um 200% - 500%<br />
Der Cache befindet sich in typo3temp/Cache/Code/fluid_template/<br />
87/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Fluid RENDERING UND CACHE<br />
Es wurde ein Compile-Schritt zum Parsing-Prozess von Templates, Layouts und Partials<br />
zugefügt Wenn keine kompilierte Cache-Datei existiert, wird diese von Fluid während des<br />
Parsens erstellt.<br />
Der Cache invalidiert wenn sich template/layout/partial geändert haben<br />
(oder die Caches gelöscht wurden). Dies beschleunigt das Rendering um 200% - 500%<br />
Der Cache befindet sich in typo3temp/Cache/Code/fluid_template/<br />
88/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Issue<br />
89/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
Fluid RENDERING UND CACHE<br />
<strong>TYPO3</strong> GIT<br />
http://git.typo3.org/<strong>TYPO3</strong>v4/Core.gita=shortlog<br />
<strong>TYPO3</strong> Bugtracker<br />
http://bugs.typo3.org<br />
XLIFF<br />
http://docs.oasis-open.org/xliff/xliff-core/xliff-core.html<br />
NEWS.txt (im Rootverzeichnis der Installation)<br />
90/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations
www.typo3.org<br />
91/91<br />
<strong>TYPO3</strong> 4.6 --rebase | the innovations