24.12.2014 Views

The Innovations - TYPO3 Forge

The Innovations - TYPO3 Forge

The Innovations - TYPO3 Forge

SHOW MORE
SHOW LESS

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 &Uuml;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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!