Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
TYPO3 CMS 7.3 - îáíîâëåíèÿÍîâîââåäåíèÿ, èçìåíåíèÿ è èñïðàâëåíèÿ
Àâòîðû:Patrick Lobacher è Michael Schams
29/June/2015Creative Commons BY-NC-SA 3.0
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Îáçîð ãëàâ
Ââåäåíèå
Backend / Âíóòðåííèé èíòåðôåéñ
TScon�g è TypoScript
Ãëóáèííûå èçìåíåíèÿExtbase è FluidÓñòàðåâøèå/óäàëåííûå ôóíêöèèÈñòî÷íèêè è àâòîðû
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ââåäåíèå
Ââåäåíèå
The Facts
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ââåäåíèå
TYPO3 CMS 7.3 - ôàêòû
Äàòà âûõîäà: 16 èþíÿ 2015
Òèï: "Sprint Release"
Íàïðàâëåííîñòü: îõâàò, èííîâàöèè, äîñòóïíîñòü
Ôîêóñ: ýêîñèñòåìà ïàêåòîâ, Composer è îáðàáîòêà ðàñøèðåíèé
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ââåäåíèå
Ñèñòåìíûå òðåáîâàíèÿ
PHP*: v5.5.0 - v5.6.x
MySQL: v5.5.x - v5.6.x (no strict mode)
Äèñêîâîå ïðîñòðàíñòâî: ìèí. 200 ÌÁ
PHP íàñòðîéêè:
memory_limit >= 128Mmax_execution_time >= 240sïàðàìåòð êîìïèëÿöèè �disable-ipv6 íå äîëæåí èñïîëüçîâàòüñÿ
Âíóòðåííèé èíòåðôåéñ òðåáóåò IE >= 9 èëè ëþáîé äðóãîéñîâðåìåííûé áðàóçåð
*) Ïîäðîáíîñòè: PHP Minimum Requirements for TYPO3 CMS 7
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ââåäåíèå
Ãðàôèê ðàçðàáîòêè è âûõîäà
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ââåäåíèå
Ìàðøðóòíàÿ êàðòà TYPO3 CMS
Ïðèìåðíûå äàòû âûõîäà è èõ íàïðàâëåííîñòü:
v7.0 02/Dec/2014 Ïåðåðàáîòêà âíóòðåííåãî èíòåðôåéñà ÷àñòü 1
v7.1 24/Feb/2015 ×èñòêà ÿäðà è îïòèìèçàöèÿ
v7.2 28/Apr/2015 Âíåøíèé èíòåðôåéñ
v7.3 16/Jun/2015 Ýêîñèñòåìà ïàêåòîâ, Composerè ðàáîòà ñ ðàñøèðåíèÿìè
v7.4 04/Aug/2015 Ïåðåðàáîòêà âíóòðåííåãî èíòåðôåéñà ÷àñòü 2
v7.5 29/Sep/2015 (áóäåò îïðåäåëåíî...)
v7.6 xx/xxx/2015 TYPO3 CMS 7 LTS (Long Term Release)
https://typo3.org/typo3-cms/roadmap/
http://typo3.org/news/article/embrace-and-innovate-typo3-cms-7/
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ââåäåíèå
Óñòàíîâêà
Îôèöèàëüíàÿ ïðîöåäóðà óñòàíîâêè ïîä Linux/Mac OS X(DocumentRoot, íàïðèìåð /var/www/site/htdocs):
$ cd /var/www/site$ wget - -content - disposition get . typo3. org/7.3$ tar xzf typo3_src-7.3.0. tar . gz$ cd htdocs$ ln -s . ./typo3_src-7.3.0 typo3_src$ ln -s typo3_src/index .php$ ln -s typo3_src/typo3$ touch FIRST_INSTALL
Symbolic links ïîä Microsoft Windows:
Èñïîëüçóéòå junction ïîä Windows XP/2000Èñïîëüçóéòå mlink ïîä Windows Vista è Windows 7
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ââåäåíèå
Îáíîâëåíèå äî TYPO3 CMS 7.x
Îáíîâëåíèå âîçìîæíî ëèøü ñ TYPO3 CMS 6.2 LTS
Ñíà÷àëà TYPO3 CMS < 6.2 íåîáõîäèìî îáíîâèòü äî TYPO3 CMS6.2 LTS
Èíñòðóêöèè ïî îáíîâëåíèþ:
http://wiki.typo3.org/Upgrade#Upgrading_to_7.3
Îôèöèàëüíîå ðóêîâîäñòâî TYPO3 "TYPO3 Installation andUpgrading": http://docs.typo3.org/typo3cms/InstallationGuide
Îáùèé ïîäõîä:
Ïðîâåðêà ìèíèìàëüíûõ ñèñòåìíûõ òðåáîâàíèé (PHP, MySQL è ò. ä.)Ïðîñìîòð deprecation_*.log èç ñòàðîé óñòàíîâêè TYPO3Îáíîâëåíèå âñåõ ðàñøèðåíèé äî ïîñëåäíèõ âåðñèéÇàãðóçêà íîâûõ èñõîäíûõ ôàéëîâ è çàïóñê Install Tool �Upgrade WizardÎáçîð ìîäóëåé, çàïóñêàåìûõ äëÿ âíóòðåííèõ ïîëüçîâàòåëåé (íå îáÿçàòåëüíî)
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Backend / Âíóòðåííèé èíòåðôåéñ
Ãëàâà 1:
Backend / Âíóòðåííèé èíòåðôåéñ
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Backend / Âíóòðåííèé èíòåðôåéñ
Íàçâàíèå ñòðàíèöû â ìîäóëÿõ Ñòðàíèöà è Ñïèñîê
Èçìåíèòü íàçâàíèÿ ñòðàíèö â ìîäóëÿõ "Ñòðàíèöà" è "Ñïèñîê" òåïåðüìîæíî äâàæäû ù¼ëêíóâ ïî çàãîëîâêó ñòðàíèöû èëè ïî çíà÷êóðåäàêòèðîâàíèÿ.
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Backend / Âíóòðåííèé èíòåðôåéñ
Install Tool: óäàëåíèå îáðàáîòàííûõ ôàéëîâ
 ðàçäåëå "Clean up" èç Install Tool äîáàâëåí íîâûé ôóíêöèîíàë äëÿóäàëåíèÿ âðåìåííûõ ôàéëîâ (íàïðèìåð, ýñêèçîâ èçîáðàæåíèé) èç FAL.Ýòî ïîëåçíî ïðè èçìåíåíèè íàñòðîåê äëÿ ðàáîòû ñ ãðàôèêîé, ëèáîïîñëå îáíîâëåíèÿ GraphicsMagick/ImageMagick äëÿ ïðèíóäèòåëüíîãîïåðåñîçäàíèÿ âñåõ èçîáðàæåíèé.
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Backend / Âíóòðåííèé èíòåðôåéñ
Íîâîå ïîëå â ìåòà äàííûõ FAL Meta Data
Ê ìåòà äàííûì çàïèñåé FAL áûëî äîáàâëåíî ïîëå "Copyright" (systemextension: �lemetadata).
TYPO3 CMS 7.3 - îáíîâëåíèÿ
TScon�g è TypoScript
Ãëàâà 2:
TScon�g è TypoScript
TYPO3 CMS 7.3 - îáíîâëåíèÿ
TScon�g è TypoScript
Íîâàÿ ôóíêöèÿ stdWrap strtotime
Íîâîå ñâîéñòâî TypoScript stdWrap strtotime ïîçâîëÿåòïðåîáðàçîâûâàòü ôîðìàòèðîâàííûå äàòû â Unix timestamps,íàïðèìåð, äëÿ âû÷èñëåíèÿ äàò
Âîñïðèíèìàþòñÿ çíà÷åíèÿ 1 èëè ëþáàÿ ñòðîêà âðåìåíè,èñïîëüçóåìàÿ â âèäå ïåðâîãî àðãóìåíòà ôóíêöèè PHP strtotime()
date_as_timestamp =TEXTdate_as_timestamp {value = 2015-04-15strtotime = 1
}
next_weekday =TEXTnext_weekday {data =GP: selected_datestrtotime = + 2 weekdaysstrftime =%Y-%m-%d
}
TYPO3 CMS 7.3 - îáíîâëåíèÿ
TScon�g è TypoScript
GPmerged â Óñëîâèÿõ
Åñëè â óñëîâèÿõ TypoScript èñïîëüçîâàòü ïåðåìåííûå GP, òîâîçâðàùåíû áóäóò ëèøü POST ïåðåìåííàÿ, â ñëó÷àå, åñëè çàïðîññîäåðæèò è POST, è GET ïåðåìåííûå.
Íîâûé ïàðàìåòð GPmerged îáúåäèíÿåò îáà ìåòîäà è âîçâðàùàåòðåçóëüòàò
[ globalVar = GPmerged:tx_demo| foo = 1]page.90 =TEXTpage.90.value =DEMO
[ global ]
TYPO3 CMS 7.3 - îáíîâëåíèÿ
TScon�g è TypoScript
Íîâûå ïàðàìåòðû äëÿ stdWrap.case
Ïàðàìåòðû uppercamelcase è lowercamelcase äîáàâëåíû êstdWrap.case
Ïðèìåð:
tt_content = CASEtt_content {key. f ie ld = CTypemy_custom_ctype =< lib .userContentmy_custom_ctype {
f i l e = EXT: site_base/Resources/Private/Templates/SomeOtherTemplate.htmlsettings .extraParam = 1
}default =< lib .userContentdefault {f i l e = TEXTf i l e . f ie ld = CTypef i l e .stdWrap. case = uppercamelcasef i l e .wrap = EXT: site_base/Resources/Private/Templates/| .html
}}
TYPO3 CMS 7.3 - îáíîâëåíèÿ
TScon�g è TypoScript
Äëÿ ôàéëîâ JavaScript äîáàâëåíî ñâîéñòâî integrity (1)
Ñâîéñòâî integrity äîáàâëåíî ïðè âêëþ÷åíèè ôàéëîâ JavaScript äëÿóêàçàíèÿ SRI è âîçìîæíîñòè âåðèôèêàöèè ðåñóðñîâ(SRI: Sub-Resource Integrity, ñìîòðèòå ñëåäóþùèé ñëàéä)
Ýòî ïðèìåíèìî ê ñâîéñòâàì TypoScript PAGE page.includeJSLibs,page.includeJSFooterlibs, includeJS è includeJSFooter
Ïðèìåð:
page {includeJS {jQuery = https://code . jquery .com/jquery -1.11.3.min. jsjquery . external = 1jQuery.disableCompression = 1jQuery.excludeFromConcatenation = 1jQuery. integrity = sha256-7LkWEzqTdpEfELxcZZlS6wAx5Ff13zZ83lYO2/ujj7g=
}}
TYPO3 CMS 7.3 - îáíîâëåíèÿ
TScon�g è TypoScript
Äëÿ ôàéëîâ JavaScript äîáàâëåíî ñâîéñòâî integrity (2)
SRI � ýòî ñïåöèôèêàöèÿ W3C, ïîçâîëÿþùàÿ ðàçðàáîò÷èêàìóáåäèòüñÿ, ÷òî ðàñïîëîæåííûå íà ñòîðîííèõ ñåðâåðàõ ðåñóðñû íåáûëè ïîääåëàíû, äëÿ ÷åãî èñïîëüçóåòñÿ
Ñîçäàíèå õåøåé öåëîñòíîñòè:
Ïàðàìåòð 1: https://srihash.orgÏàðàìåòð 2: èñïîëüçîâàíèå ñëåäóþùåé êîìàíäû shell
cat FILENAME. js | openssl dgst -sha256 -binary | openssl enc -base64 -A
Ïîäðîáíåå:
http://www.w3.org/TR/SRI/
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ãëóáèííûå èçìåíåíèÿ
Ãëàâà 3:
Ãëóáèííûå èçìåíåíèÿ
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ãëóáèííûå èçìåíåíèÿ
Èíòåãðàöèÿ Symfony/Console â CommandController (1)
Òåïåðü CommandController ïîçâîëÿåò èñïîëüçîâàòü Symfony/Consoleèçíóòðè è ïðåäîñòàâëÿåò ðàçíûå ìåòîäû:
TableHelper
outputTable($rows, $headers = NULL)
DialogHelper
select($question, $choices, $default = NULL, $multiSelect = false, $attempts= FALSE)ask($question, $default = NULL, array $autocomplete = array())askCon�rmation($question, $default = TRUE)askHiddenResponse($question, $fallback = TRUE)askAndValidate($question, $validator, $attempts = FALSE, $default =NULL, array $autocomplete = NULL)askHiddenResponseAndValidate($question, $validator, $attempts = FALSE,$fallback = TRUE)
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ãëóáèííûå èçìåíåíèÿ
Èíòåãðàöèÿ Symfony/Console â CommandController (2)
ProgressHelper
progressStart($max = NULL)progressSet($current)progressAdvance($step = 1)progressFinish()
(ïðèìåðû êîäà íà ñëåäóþùèõ ñëàéäàõ)
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ãëóáèííûå èçìåíåíèÿ
Èíòåãðàöèÿ Symfony/Console â CommandController (3)
<?phpnamespace Acme\Demo\Command;use TYPO3\CMS\Extbase\Mvc\Controller\CommandController;
class MyCommandController extends CommandController {public function myCommand() {
// render a table$this->output->outputTable(array(array( 'Bob' , 34, 'm') ,array( 'Sally ' , 21, ' f ' ) ,array( 'Blake ' , 56, 'm')
) ,array( 'Name' , 'Age' , 'Gender') ) ;
// select$colors = array( 'red ' , 'blue ' , 'yellow ') ;$selectedColorIndex = $this->output->select ( 'Please select one color ' , $colors , 'red ') ;$this->outputLine( 'You choose the color %s . ' , array($colors [ $selectedColorIndex ]) ) ;
[ . . . ]
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ãëóáèííûå èçìåíåíèÿ
Èíòåãðàöèÿ Symfony/Console â CommandController (4)
[ . . . ]// ask$name = $this->output->ask( 'What is your name?' . PHP_EOL, 'Bob' , array( 'Bob' , 'Sally ' ,
'Blake ') ) ;$this->outputLine( 'Hello %s . ' , array($name)) ;
// prompt$likesDogs = $this->output->askConfirmation( 'Do you like dogs? ') ;i f ($likesDogs) {$this->outputLine( 'You do like dogs ! ') ;
}
// progress$this->output->progressStart(600) ;for ($i = 0; $i < 300; $i ++) {$this->output->progressAdvance() ;usleep(5000) ;
}$this->output->progressFinish() ;
}}?>
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ãëóáèííûå èçìåíåíèÿ
Backend Login API (1)
Ïîëíîñòüþ ïåðåðàáîòàíà àâòîðèçàöèÿ âî âíóòðåííåì èíòåðôåéñå èïðåäñòàâëåí íîâûé API
Èçâëå÷åíà ôîðìà OpenID, êîòîðàÿ òåïåðü èñïîëüçóåò íîâûé API(äàâàÿ íåçàâèñèìîñòü îò ãëàâíûõ êëàññîâ ÿäðà)
Íîâàÿ êîíöåïöèÿ àâòîðèçàöèè áàçèðóåòñÿ íà "ïðîâàéäåðàõàâòîðèçàöèè", êîòîðûå ìîæíî çàðåãèñòðèðîâàòü â ôàéëåext_localconf.php ñëåäóþùèì îáðàçîì:
$GLOBALS[ 'TYPO3_CONF_VARS' ] [ 'EXTCONF' ] [ ' backend ' ] [ ' loginProviders '][1433416020] = ['provider ' => \TYPO3\CMS\Backend\LoginProvider\UsernamePasswordLoginProvider : : class
,' sorting ' => 50,' icon - class ' => 'fa -key' ,' label ' => 'LLL:EXT:backend/Resources/Private/Language/locallang . xlf : login . link '
] ;
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ãëóáèííûå èçìåíåíèÿ
Backend Login API (2)
Ïàðàìåòðû çàäàþòñÿ ñëåäóþùèì îáðàçîì:
provider:íàçâàíèå êëàññà ïðîâàéäåðà, êîòîðûé äîëæåí ðåàëèçîâûâàòüTYPO3\CMS\Backend\LoginProvider\LoginProviderInterfacesorting:ïîðÿäîê ññûëîê íà âîçìîæíûå ïðîâàéäåðû àâòîðèçàöèè íàôîðìå àâòîðèçàöèèicon-class:íàçâàíèå çíà÷êà-íàäïèñè äëÿ ñûëêè íà ôîðìå àâòîðèçàöèèlabel:ìåòêà äëÿ ññûëêè íà ïðîâàäåðà àâòîðèçàöèè äëÿ ôîðìûàâòîðèçàöèè
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ãëóáèííûå èçìåíåíèÿ
Backend Login API (3)
The LoginProviderInterface ñîäåðæèò ëèøü ìåòîä
public function render(StandaloneView $view, PageRenderer $pageRenderer,
LoginController $loginController);
Ïàðàìåòðû îïðåäåëÿþòñÿ òàêèì îáðàçîì:
$view:Fluid StandaloneView âûâîäÿùèé ôîðìó àâòîðèçàöèè.Íåîáõîäèìî óêàçàòü ôàéë øàáëîíà, à òàêæå, ïîíåîáõîäèìîñòè, äîáàâèòü ïåðåìåííûå äëÿ ñîáñòâåííûõ íóæä.$pageRenderer:Ýêçåìïëÿð PageRenderer èìååò âîçìîæíîñòü äîáàâëåíèÿíåîáõîäèìûõ ðåñóðñîâ JavaScript.$loginController:Ýêçåìïëÿð LoginController.
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ãëóáèííûå èçìåíåíèÿ
Backend Login API (4)
 øàáëîíå äîëæåí áûòü ðàçäåë <f:layout name="Login"> è<f:section name="loginFormFields"> (äëÿ ïîëåé ôîðìû):
<f : layout name="Login" /><f : section name="loginFormFields"><div class="form-group t3js - login -openid- section" id="t3 - login -openid_url- section"><div class="input -group"><input type="text" id="openid_url"
name="openid_url"value="{presetOpenId}"autofocus="autofocus"placeholder="{f : translate(key: 'openId' , extensionName: 'openid ')}"class="form-control input - login t3js - clearable t3js - login -openid- f ie ld" />
<div class="input -group-addon"><span class="fa fa -openid"></span>
</div></div>
</div></f : section>
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ãëóáèííûå èçìåíåíèÿ
CategoryRegistry ñ íîâûìè ïàðàìåòðàìè
Ìåòîä CategoryRegistry->addTcaColumn ïîëó÷àåò ïàðàìåòðû äëÿçàäàíèÿ l10n_mode è l10n_display:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility : :makeCategorizable($extensionKey ,$tableName,' categories ' ,array(
'l10n_mode' => ' string (keyword) ' ,' l10n_display ' => ' l i s t of keywords'
)) ;
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ãëóáèííûå èçìåíåíèÿ
Ñïðàéòû â ìîäóëÿõ âíóòðåííåãî èíòåðôåéñà
Ìîäóëè âíóòðåííåãî èíòåðôåéñà (îñíîâíûå, âðîäå "Âåá" è
ïîäìîäóëè, âðîäå "Ñïèñîê ôàéëîâ") òåïåðü ìîãóò èñïîëüçîâàòü
ñïðàéòû äëÿ çíà÷êîâ
(ìîæíî èñïîëüçîâàòü ëèøü ñïðàéòû, èçâåñòíûå äëÿ TYPO3!)
Ïðèìåð:\TYPO3\CMS\Core\Utility\ExtensionManagementUtility : :addModule(
'web' ,' layout ' ,'top ' ,\TYPO3\CMS\Core\Utility\ExtensionManagementUtility : : extPath($_EXTKEY) . 'Modules/
Layout/ ' ,array(
' script ' => '_DISPATCH' ,'access ' => 'user ,group' ,'name' => 'web_layout' ,' configuration ' => array( ' icon ' => 'module-web') ,' labels ' => array(' ll_ref ' => 'LLL:EXT:cms/layout/locallang_mod. xlf ' ,
) ,)
) ;
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ãëóáèííûå èçìåíåíèÿ
FormEngine NodeFactory API (1)
Òåïåðü âîçìîæíî çàðåãèñòðèðîâàòü íîâûå óçëû è ïåðåíàçíà÷àòüñóùåñòâóþùèå
$GLOBALS[ 'TYPO3_CONF_VARS' ] [ 'SYS' ] [ ' formEngine ' ] [ ' nodeRegistry'][1433196792] = array('nodeName' => 'input ' ,' priority ' => 40,' class ' => \MyVendor\MyExtension\Form\Element\T3editorElement : : class
) ;
Ïðèâåä¼ííûé ïðèìåð ðåãèñòðèðóåò íîâûé êëàññMyVendor\MyExtension\Form\Element\T3editorElement â êà÷åñòâåêëàññà, ôîðìèðóþùåãî òèï TCA input, êîòîðûé äîëæåíðåàëèçîâûâàòü èíòåðôåéñTYPO3\CMS\Backend\Form\NodeInterface
Êëþ÷îì ìàññèâà ñëóæèò Unix timestamp äàòû äîáàâëåíèÿðåãèñòðèðóåìîãî ýëåìåíòà
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ãëóáèííûå èçìåíåíèÿ
FormEngine NodeFactory API (2)
Åñëè äëÿ îáðàáîòêè òîãî æå òèïà áûëî çàðåãèñòðèðîâàíî íåñêîëüêîýëåìåíòîâ, èñïîëüçóåòñÿ èìåþùèé âûñøèé ïðèîðèòåò (îò 0 äî 100)
Íîâûé òèï TCA ìîæíî ðåãèñòðèðîâàòü ñëåäóþùèì îáðàçîì:TCA
'columns' => array('bodytext ' => array('config ' => array('type ' => 'text ' ,'renderType' => '3dCloud' ,
) ,) ,
)
ext_localconf.php
$GLOBALS[ 'TYPO3_CONF_VARS' ] [ 'SYS' ] [ ' formEngine ' ] [ ' nodeRegistry'][1433197759] = array('nodeName' => '3dCloud' ,' priority ' => 40,' class ' => \MyVendor\MyExtension\Form\Element\ShowTextAs3dCloudElement: : class
) ;
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Ãëóáèííûå èçìåíåíèÿ
Ñèãíàë postProcessMirrorUrl
Ñèãíàë postProcessMirrorUrl ïåðåìåù¼í â íîâûé êëàññ
BREAKING CHANGE!
 ñëåäóþùåì ïðèìåðå êîäà ïðèíèìàåòñÿ âî âíèìàíèå âåðñèÿTYPO3:
$signalSlotDispatcher->connect(version_compare(TYPO3_version, '7.0 ' , '<')? 'TYPO3\\CMS\\Lang\\Service\\UpdateTranslationService ': 'TYPO3\\CMS\\Lang\\Service\\TranslationService ' ,
'postProcessMirrorUrl ' ,'Vendor\\Extension\\Slots\\CustomMirror' ,'postProcessMirrorUrl '
) ;
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Extbase è Fluid
Ãëàâà 4:
Extbase è Fluid
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Extbase è Fluid
ActionMenuItemGroupViewHelper (1)
Ýòîò ïðîåêòîð/ViewHelper ïîçâîëÿåò èñïîëüçîâàòü ãðóïïûïàðàìåòðîâ â ïîëÿõ âûáîðà âíóòðåííåãî èíòåðôåéñà,êîíòðîëèðóþùèå âûáèðàåìûå äåéñòâèÿ
Ïðèìåð:
<f :be.menus.actionMenu><f :be.menus.actionMenuItem label="Default : Welcome" controller="Default" action="
index" /><f :be.menus.actionMenuItem label="Community: get in touch" controller="Community"
action="index" /><f :be.menus.actionMenuItemGroup label="Information"><f :be.menus.actionMenuItem label="PHP Information" controller="Information"
action="listPhpInfo" /><f :be.menus.actionMenuItem label="Documentation" controller="Information"
action="documentation" /><f :be.menus.actionMenuItem label="Hooks" controller="Information" action="hooks"
/><f :be.menus.actionMenuItem label="Signals" controller="Information" action="
signals" /><f :be.menus.actionMenuItem label="XClasses" controller="Information" action="
xclass" /></f :be.menus.actionMenuItemGroup>
</f :be.menus.actionMenu>
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Extbase è Fluid
ActionMenuItemGroupViewHelper (2)
Ïðèìåð ïðåäûäóùåãî ñëàéäà âûâîäèòñÿ ñëåäóþùèì îáðàçîì:
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Extbase è Fluid
Ïîääåðæêà øàáëîíîâ äëÿ FlashMessagesViewHelper
Òåïåðü FlashMessagesViewHelper ïîääåðæèâàåò øàáëîíû/templates
Íîâûé àòðèáóò as ïîçâîëÿåò óêàçàòü íàçâàíèå ïåðåìåííîé,êîòîðóþ ìîæíî èñïîëüçîâàòü âíóòðè äî÷åðíèõ ýëåìåíòîâïðîåêòîðà/ViewHelper äëÿ äîñòóïà ê âñïëûâàþùèì ñîîáùåíèÿì
Ïðèìåð:
<f : flashMessages as="flashMessages"><ul class="myFlashMessages"><f : for each="{flashMessages}" as="flashMessage"><l i class="alert {flashMessage . class}"><h4>{flashMessage . t i t le}</h4><span class="fancy- icon">{flashMessage .message}</span>
</li></f : for>
</ul></f : flashMessages>
Çàìå÷àíèå: òåïåðü ïàðàìåòð renderMode óñòàðåë
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Extbase è Fluid
Íîâûå ñâîéñòâà cObject FLUIDTEMPLATE (1)
cObject FLUIDTEMPLATE áûë äîïîëíåí templateRootPaths ètemplateName
×òî ïîçâîëÿåò óêàçàòü íàçâàíèå øàáëîíà è äëÿ âûâîäà áóäåòèñïîëüçîâàí øàáëîí ñ ýòèì íàçâàíèåì íàðÿäó ñ óêàçàííûìôîðìàòîì ïî ïóòè äëÿ øàáëîíîâ èç íàñòðîéêè templateRootPaths
templateRootPaths èñïîëüçóåò òó æå ëîãèêó ðåçåðâèðîâàíèÿ, ÷òî èlayoutRootPath è partialRootPath
templateName: string/stdWraptemplateRootPaths: ìàññèâ ïóòåé ê ôàéëàì ñ ïîääåðæêîéïðåôèêñà "EXT:"
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Extbase è Fluid
Íîâûå ñâîéñòâà cObject FLUIDTEMPLATE (2)
Ïðèìåð TypoScript:
l ib . stdContent = FLUIDTEMPLATElib .stdContent {templateName =TEXTtemplateName.stdWrap {cObject = TEXTcObject {data = levelf ie ld : -2 ,backend_layout_next_level , slideoverride . f ie ld = backend_layoutsplit {token = frontend__1.current = 11.wrap = |
}}ifEmpty = Default
}templateRootPaths {10 = EXT: frontend/Resources/Private/Templates20 = EXT: sitemodification/Resources/Private/Templates
}}
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Extbase è Fluid
Óäàëåíèå xmlns-àòðèáóòîâ è òåãîâ HTML (1)
Ñ ââåäåíåì â îáèõîä àòðèáóòîâ xmlns:* äëÿ ïîäêëþ÷åíèÿïðîåêòîðîâ/ViewHelpers, ñòàëà âîçìîæíà ïîääåðæêà ñî ñòîðîíûIDE äëÿ øàáëîíîâ Fluid. Ïðîáëåìà áûëà â òîì, ÷òî àòðèáóòûxmlns:* ñ ñîîòâåòñòâóþùèì òåãîì òàêæå âûâîäèëèñü, ÷òî îáû÷íîíåæåëàòåëüíî.
Îáîéòè ïðîáëåìó óäàâàëîñü ñ èñïîëüçîâàíèåì sections, íî òàêîåðåøåíèå íåèíòóèòèâíî ïîíÿòíî, è íåäîïóñòèìî â ìàêåòàõ/layouts.Ýòî òàêæå íåãàòèâíî îòðàæàåòñÿ íà çàäåéñòâîâàííûõ ðåñóðñàõ.
xmlns:* àòðèáóòû äëÿ âåðíûõ îáëàñòåé èìåíîâàíèÿ ViewHelper
òåïåðü óäàëÿþòñÿ ïåðåä âûâîäîì, åñëè èñïîëüçóåòñÿ ñëåäóþùèé
ñèíòàêñèñ: http://typo3.org/ns/<phpNamespace>
(xmlns àòðèáóòû äëÿ íå-ViewHelper îáëàñòåé � ñîõðàíÿþòñÿ)
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Extbase è Fluid
Óäàëåíèå xmlns-àòðèáóòîâ è òåãîâ HTML (2)
Âêëþ÷åíèå îáëàñòåé èìåíîâàíèÿ ViewHelper âíóòðè òåãà HTML ñàòðèáóòîì data-namespace-typo3-�uid="true" äëÿ ïðåäîòâðàùåíèÿâûâîäà âñåãî òåãà HTML
<html data-namespace-typo3- fluid="true"xmlns: f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers">
<f : i f condition="{newsItem. t i t le}"><f :then><n: titleTag>{newsItem. t i t le}</n: titleTag>
</f :then><f : else><n: titleTag>News-Detail</n: titleTag>
</f : else></f : i f>
</html>
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Extbase è Fluid
Íîâûå ìåòîäû âî Fluid-StandaloneView
StandaloneView äîïîëíåí setTemplateRootPaths($templatePaths) èsetTemplate($templateName, $throwException = TRUE)
ñ òåì æå ôóíêöèîíàëîì, ÷òî è cObject FLUIDTEMPLATE
Ïðèìåð (âûâîä øàáëîíà email):
$view = GeneralUtility : :makeInstance(StandaloneView : : class ) ;$view->setLayoutRootPaths(array(GeneralUtility : : getFileAbsFileName(
'EXT:my_extension/Resources/Private/Layouts ') )) ;$view->setPartialRootPaths(array(GeneralUtility : : getFileAbsFileName(
'EXT:my_extension/Resources/Private/Partials ') )) ;$view->setTemplateRootPaths(array(GeneralUtility : : getFileAbsFileName(
'EXT:my_extension/Resources/Private/Templates') )) ;$view->setTemplate( 'Email/Notification ') ;$emailBody = $view->render() ;
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Extbase è Fluid
Îáðàáîòêà äàííûõ äëÿ FLUIDTEMPLATE cObject (1)
cObject FLUIDTEMPLATE äîïîëíåí dataProcessing
Ýòà íàñòðîéêà ñëóæèò äëÿ äîáàâëåíèÿ îäíîãî èëè íåñêîëüêèõîáðàáîò÷èêîâ äëÿ ðàáîòû ñ ïåðåìåííîé $data âûâîäèìîãî âòåêóùèé ìîìåíò cObject(íàïðèìåð, tt_content èëè page)
Ïðîöåññîð äîëæåí ðåàëèçîâûâàòü èíòåðôåéñFluidTemplateDataProcessorInterface è ñîäåðæàòü ñëåäóþùèé ìåòîä:
function process(array &$data , array $processorConfiguration ,array $configuration , StandaloneView $view) {[ . . . ]
}
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Extbase è Fluid
Îáðàáîòêà äàííûõ äëÿ FLUIDTEMPLATE cObject (2)
Ïðèìåð:
my_custom_ctype = FLUIDTEMPLATEmy_custom_ctype {templateRootPaths {10 = EXT:your_extension_key/Resources/Private/Templates
}templateName = CustomNamesettings {extraParam = 1
}dataProcessing {1 = Vendor\YourExtensionKey\DataProcessing\MyFirstCustomProcessor2 = AnotherVendor\AnotherExtensionKey\DataProcessing\MySecondCustomProcessor2 {options {myOption = SomeValue
}}
}}
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Óñòàðåâøèå/óäàëåííûå ôóíêöèè
Ãëàâà 5:
Óñòàðåâøèå/óäàëåííûå ôóíêöèè
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Óñòàðåâøèå/óäàëåííûå ôóíêöèè
Ðåîðãàíèçàöèÿ FormEngine
TCA:
Ïàðàìåòðû _PADDING, _VALIGN è DISTANCE óäàëåíû èçTCA['aTable']['columns']['aField']['con�g']['wizards']
Êëþ÷ TCA['aTable']['ctrl']['mainPalette'] óäàë¼í
TScon�g:
Êëþ÷è mod.web_layout.tt_content.�eldOrder èTCEFORM.aTable.aField.linkTitleToSelf óäàëåíû
Óëîâêè/hooks:
Óëîâêè/hooks èñïîëüçóþò êëþ÷ type âìåñòî form_type
Óëîâêà/hook getSingleFieldClass óäàëåíà
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Óñòàðåâøèå/óäàëåííûå ôóíêöèè
Óäàëåíèå IdentityMap èç Extbase Persistence
Êëàññ IdentityMap óäàë¼í èç Extbase persistence
(ãåíåðèðóåòñÿ Re�ectionException ïðè åãî èñïîëüçîâàíèè)
Äîñòóï ê ðàíåå ñóùåñòâóþùåìó ñâîéñòâó IdentityMap âíóòðèDataMapper è Repository òåïåðü íå óäàñòñÿ, à ñîçäàíèåýêçåìïëÿðà IdentityMap áîëåå íåâîçìîæíî
Âìåñòî ýòîãî èñïîëüçóéòå ýêçåìïëÿð "Sessions":
$session = GeneralUtility : :makeInstance(ObjectManager : : class )->get(\TYPO3\CMS\Extbase\Persistence\Generic\Session : : class
) ;
$session->registerObject($object , $identifier ) ;
i f ($session->hasIdentifier ( $identifier )) {$object = $session->getObjectByIdentifier($identifier , $className) ;
}
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Óñòàðåâøèå/óäàëåííûå ôóíêöèè
Ðàçíîå (1)
Èñïîëüçîâàíèå ôàéëà typo3conf/extTables.php íå ðåêîìåíäîâàíî.
Âìåñòî ýòîãî èñïîëüçóéüòå ôàéë:
<your_extension>/Con�guration/TCA/Overrides/pages.php
Íàñòðîéêà $TYPO3_CONF_VARS[GFX][png_to_gif] óäàëåíà
 óñòàíîâêàõ TYPO3 CMS, íå èìåþùèõ óñòàíîâëåííîåðàñøèðåíèå rsaauth, ïàðîëè âíóòðåííåãî èíòåðôåéñà òåïåðüïðåîáðàçóþòñÿ â îáû÷íûé òåêñò(ðåøåíèå: óñòàíîâèòü ðàñøèðåíèå rsaauth èëè èñïîëüçîâàòü
HTTPS äëÿ âíóòðåííåãî èíòðåôåéñà)
Ìåòîä exec_SELECTgetRows() òåïåðü ïðîâåðÿåò ïàðàìåòð$uidIndexField. Åñëè óêàçàííîå ïîëå íå ïðèñóòñòâóåò âðåçóëüòàòàõ èç áàçû äàííûõ, âûçûâàåòñÿInvalidArgumentException.
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Óñòàðåâøèå/óäàëåííûå ôóíêöèè
Ðàçíîå (2)
DBAL ïàðàìåòð con�g.classFile óäàë¼í
Ïàðàìåòðû iconOnly è styleAttributes èç CshViewHelper òåïåðüïîìå÷åíû êàê íå ðåêîìåíäóåìûå
Ïàðàìåòð TypoScript page.bgImg òåïåðü íå ðåêîìåíäîâàí
Ìåòîä isEnabled() êëàññà T3editor òåïåðü íå ðåêîìåíäîâàí
Ñòàðûé TYPO3 ClassLoader óäàë¼í äëÿ ïîëüçû èëè èñïîëüçóåòñÿComposer ClassLoader
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Èñòî÷íèêè è àâòîðû
Ãëàâà 6:
Èñòî÷íèêè è àâòîðû
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Èñòî÷íèêè è àâòîðû
Èñòî÷íèêè
Íîâîñòè TYPO3:
http://typo3.org/news
Èíôîðìàöèÿ ïî âûõîäó âåðñèé:
http://wiki.typo3.org/TYPO3_CMS_7.3.0
INSTALL.md è ChangeLog
typo3/sysext/core/Documentation/Changelog/7.3/*
TYPO3 Bug-/Issuetracker:
https://forge.typo3.org/projects/typo3cms-core
Ðåïîçèòîðèè TYPO3 Git:
https://git.typo3.org/Packages/TYPO3.CMS.git
https://git.typo3.org/Packages/TYPO3.Fluid.git
TYPO3 CMS 7.3 - îáíîâëåíèÿ
Èñòî÷íèêè è àâòîðû
Ñëàéäû íîâîââåäåíèé TYPO3 CMS:
Patrick Lobacher(Èññëåäîâàíèÿ, ñáîð èíôîðìàöèè è íåìåöêàÿ âåðñèÿ)
Michael Schams(Ëèäåð ïðîåêòà è àíãëèéñêàÿ âåðñèÿ)
Ïåðåâîä÷èêè:Àíäðåé Àêñ¼íîâ, Sergio Catala, Jigal van Hemert, Michel Mix, Sinisa Mitrovic,
Angeliki Plati, Nena Jelena Radovic, Roberto Torresani
http://typo3.org/download/release-notes/whats-new
Licensed under Creative Commons BY-NC-SA 3.0
TYPO3 CMS 7.3 - îáíîâëåíèÿ