Project

General

Profile

Bug #77287 ยป diff_backend.txt

Stephan Rotheneder, 2016-07-28 13:07

 
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Clipboard/Clipboard.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Clipboard/Clipboard.php
719d718
<
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/ContextMenu/Pagetree/ContextMenuDataProvider.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/ContextMenu/Pagetree/ContextMenuDataProvider.php
67c67,84
< return array_merge($disableItems, $additionalItems);
---
> $disableItems = array_merge($disableItems, $additionalItems);
>
> // Further manipulation of disableItems array via hook
> // @internal: This is an internal hook for extension impexp only, this hook may change without further notice
> if (!empty($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['backend']['contextMenu']['disableItems'])
> && is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['backend']['contextMenu']['disableItems'])
> ) {
> $hooks = $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['backend']['contextMenu']['disableItems'];
> foreach ($hooks as $hook) {
> $parameterArray = [
> 'disableItems' => &$disableItems,
> ];
> $null = null;
> GeneralUtility::callUserFunction($hook, $parameterArray, $null);
> }
> }
>
> return $disableItems;
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Controller/BackendController.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Controller/BackendController.php
484c484
< 'refresh_login_title' => sprintf($lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_title'), htmlspecialchars($this->getBackendUser()->user['username'])),
---
> 'refresh_login_title' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_title'),
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Controller/ContentElement/ElementInformationController.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Controller/ContentElement/ElementInformationController.php
406,407c406,407
< <strong>' . htmlspecialchars($GLOBALS['BE_USER']->user['username']) . '</strong><br>
< ' . ($GLOBALS['BE_USER']->user['realName'] ? htmlspecialchars($GLOBALS['BE_USER']->user['realName']) : '') . '
---
> <strong>' . htmlspecialchars($creatorRecord['username']) . '</strong><br>
> ' . ($creatorRecord['realName'] ? htmlspecialchars($creatorRecord['realName']) : '') . '
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Controller/ContentElement/NewContentElementController.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Controller/ContentElement/NewContentElementController.php
545c545
< if ($authModeDeny || $fN === 'CType' && in_array($fV, $removeItems[$fN]) || $isNotInKeepItems) {
---
> if ($authModeDeny || $fN === 'CType' && (in_array($fV, $removeItems[$fN]) || $isNotInKeepItems)) {
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Controller/File/FileController.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Controller/File/FileController.php
166,167d165
< // Push errors to flash message queue, if there are any
< $this->fileProcessor->pushErrorMessagesToFlashMessageQueue();
186,187d183
< // Push errors to flash message queue, if there are any
< $this->fileProcessor->pushErrorMessagesToFlashMessageQueue();
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Controller/FormInlineAjaxController.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Controller/FormInlineAjaxController.php
796a797,800
> if (!$this->backendUserHasUcInlineView($backendUser)) {
> return [];
> }
>
799c803
< $inlineView = array();
---
> $inlineView = [];
800a805
>
804a810,820
> * Method to check whether the backend user has the property inline view for the current IRRE item.
> * In existing or old IRRE items the attribute may not exist, then the unserialize will fail.
> *
> * @param BackendUserAuthentication $backendUser
> * @return bool
> */
> protected function backendUserHasUcInlineView(BackendUserAuthentication $backendUser) {
> return !empty($backendUser->uc['inlineView']);
> }
>
> /**
875,911c891
< // Substitute FlexForm addition and make parsing a bit easier
< $domObjectId = str_replace('---', ':', $domObjectId);
< // The starting pattern of an object identifier (e.g. "data-<firstPidValue>-<anything>)
< $pattern = '/^data' . '-' . '(?<firstPidValue>.+?)' . '-' . '(?<anything>.+)$/';
<
< $flexFormPath = [];
< // Will be checked against the FlexForm configuration as an additional safeguard
< $foreignTableName = '';
<
< if (preg_match($pattern, $domObjectId, $match)) {
< // For new records the flexform path should be the second to last array element,
< // followed by the foreign table name. For existing records it should be the third
< // array element from the end as the UID of the inline record is provided as well.
< $parts = array_slice(explode('-', $match['anything'], 4), -2, 2);
<
< if (count($parts) !== 2 || !isset($parts[0]) || strpos($parts[0], ':') === false) {
< throw new \UnexpectedValueException(
< 'DOM Object ID ' . $domObjectId . ' does not contain required information '
< . 'to extract inline field configuration.',
< 1446996136
< );
< }
<
< $fieldParts = GeneralUtility::trimExplode(':', $parts[0]);
<
< // FlexForm parts start with data:
< if (empty($fieldParts) || !isset($fieldParts[1]) || $fieldParts[1] !== 'data') {
< throw new \UnexpectedValueException(
< 'Malformed flexform identifier: ' . $parts[2],
< 1446996254
< );
< }
<
< $flexFormPath = array_slice($fieldParts, 2);
< $foreignTableNameParts = explode('-', $parts[1]);
< $foreignTableName = $foreignTableNameParts[0];
< }
---
> list($flexFormPath, $foreignTableName) = $this->splitDomObjectId($domObjectId);
914c894
<
---
> $flexFormPath = explode(':', $flexFormPath);
970a951,994
> }
>
> /**
> * split the domObjectID and retrieve the needed parts
> *
> * @param string $domObjectId
> *
> * @return array
> */
> protected function splitDomObjectId($domObjectId)
> {
>
> // Substitute FlexForm addition and make parsing a bit easier
> $domObjectId = str_replace('---', ':', $domObjectId);
> $pattern = '/:data:(?<flexformPath>.*?)-(?<tableName>[^-]+)(?:-(?:NEW)?\w+)?$/';
>
> /* EXPLANATION for the regex:
> * according https://regex101.com/
> *
> * :data: matches the characters :data: literally (case sensitive)
> * (?<flexformPath>.*?) Named capturing group flexformPath
> * .*? matches any character (except newline)
> * Quantifier: *? Between zero and unlimited times, as few times as possible, expanding as needed [lazy]
> * - matches the character - literally
> * (?<tableName>[^-]+) Named capturing group tableName
> * [^-]+ match a single character not present in the list below
> * Quantifier: + Between one and unlimited times, as many times as possible, giving back as needed [greedy]
> * - the literal character -
> * (?:-(?:NEW)?\w+)? Non-capturing group
> * Quantifier: ? Between zero and one time, as many times as possible, giving back as needed [greedy]
> * - matches the character - literally
> * (?:NEW)? Non-capturing group
> * Quantifier: ? Between zero and one time, as many times as possible, giving back as needed [greedy]
> * NEW matches the characters NEW literally (case sensitive)
> * \w+ match any word character [a-zA-Z0-9_]
> * Quantifier: + Between one and unlimited times, as many times as possible, giving back as needed [greedy]
> * $ assert position at end of a line
> */
>
> if (preg_match($pattern, $domObjectId, $match)) {
> return array($match['flexformPath'], $match['tableName']);
> }
>
> return [];
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Controller/LoginController.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Controller/LoginController.php
156c156
< $pageRenderer->addJsLibrary('placeholders', 'sysext/core/Resources/Public/JavaScript/Contrib/placeholders.jquery.min.js');
---
> $pageRenderer->addJsLibrary('placeholders', 'sysext/core/Resources/Public/JavaScript/Contrib/placeholders.min.js');
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Controller/Page/LocalizationController.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Controller/Page/LocalizationController.php
193a194,206
> $this->process($params);
>
> $response->getBody()->write(json_encode([]));
> return $response;
> }
>
> /**
> * Processes the localization actions
> *
> * @param array $params
> */
> protected function process($params)
> {
254,256d266
<
< $response->getBody()->write(json_encode([]));
< return $response;
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Controller/PageLayoutController.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Controller/PageLayoutController.php
1498c1498
< ->setTitle('__' . $lang->sL(BackendUtility::getLabelFromItemlist('tt_content', 'colPos', $colPos), true) . ':__')
---
> ->setTitle('__' . $lang->sL(BackendUtility::getLabelFromItemlist('tt_content', 'colPos', $colPos)) . ':__')
1505c1505
< ->setTitle(htmlspecialchars(GeneralUtility::fixed_lgd_cs(($cRow['header'] ? $cRow['header'] : '[' . $lang->sL('LLL:EXT:lang/locallang_core.xlf:labels.no_title') . '] ' . strip_tags($cRow['bodytext'])), $beUser->uc['titleLen'])))
---
> ->setTitle(GeneralUtility::fixed_lgd_cs(($cRow['header'] ? $cRow['header'] : '[' . $lang->sL('LLL:EXT:lang/locallang_core.xlf:labels.no_title') . '] ' . strip_tags($cRow['bodytext'])), $beUser->uc['titleLen']))
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Controller/UserSettingsController.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Controller/UserSettingsController.php
205c205
< $array = &$this->getBackendUser()->uc;
---
> $array = $this->getBackendUser()->uc;
208c208
< $array = &$array[$subkey];
---
> $array = &$array[$subkey];
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Controller/Wizard/TableController.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Controller/Wizard/TableController.php
134,135d133
< // Setting form tag:
< list($rUri) = explode('#', GeneralUtility::getIndpEnv('REQUEST_URI'));
161a160
> list($rUri) = explode('#', GeneralUtility::getIndpEnv('REQUEST_URI'));
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Domain/Repository/Localization/LocalizationRepository.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Domain/Repository/Localization/LocalizationRepository.php
36c36
< 'tt_content,tt_content AS tt_content_orig',
---
> 'tt_content,tt_content AS tt_content_orig,sys_language',
40a41
> . ' AND tt_content_orig.sys_language_uid=sys_language.uid'
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Form/AbstractNode.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Form/AbstractNode.php
166c166
< if ($config['renderType'] !== 'selectTree' && $maxItems <= 1 && $minItems > 0) {
---
> if ($config['type'] === 'select' && $config['renderType'] !== 'selectTree' && $maxItems <= 1 && $minItems > 0) {
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Form/Container/FlexFormNoTabsContainer.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Form/Container/FlexFormNoTabsContainer.php
61c61
< if ((string)$row[$key] !== '') {
---
> if (is_string($row[$key]) && $row[$key] !== '') {
62a63,64
> } elseif (is_array($row[$key]) && isset($row[$key][0]) && is_string($row[$key][0]) && $row[$key][0] !== '') {
> $parameterArray['_cshKey'] .= '.' . $row[$key][0];
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Form/Container/FlexFormTabsContainer.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Form/Container/FlexFormTabsContainer.php
65c65
< if ((string)$row[$key] !== '') {
---
> if (is_string($row[$key]) && $row[$key] !== '') {
66a67,68
> } elseif (is_array($row[$key]) && isset($row[$key][0]) && is_string($row[$key][0]) && $row[$key][0] !== '') {
> $parameterArray['_cshKey'] .= '.' . $row[$key][0];
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Form/Container/InlineRecordContainer.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Form/Container/InlineRecordContainer.php
503c503
< GeneralUtility::quoteJSvalue($hiddenField) .')';
---
> GeneralUtility::quoteJSvalue($hiddenField) . ')';
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Form/Container/SingleFieldContainer.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Form/Container/SingleFieldContainer.php
412c412
< . '</div>
---
> . '</div>
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Form/Element/ImageManipulationElement.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Form/Element/ImageManipulationElement.php
91c91
< if (GeneralUtility::inList(mb_strtolower($config['allowedExtensions']), mb_strtolower($file->getExtension()))) {
---
> if (GeneralUtility::inList(strtolower($config['allowedExtensions']), strtolower($file->getExtension()))) {
141c141
< $content .= mb_strtoupper(implode(', ', GeneralUtility::trimExplode(',', $config['allowedExtensions'])));
---
> $content .= strtoupper(implode(', ', GeneralUtility::trimExplode(',', $config['allowedExtensions'])));
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php
961a962
> $effectivePid = $result['effectivePid'];
992a994,999
> // Use pid from parent page clause if in flex flom context
> if (strpos($foreignTableClause, '###CURRENT_PID###') !== false
> && !empty($result['flexParentDatabaseRow']['pid'])
> ) {
> $effectivePid = $result['flexParentDatabaseRow']['pid'];
> }
1045c1052
< (int)$result['effectivePid'],
---
> (int)$effectivePid,
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaFlexProcess.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaFlexProcess.php
614d613
<
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Form/FormResultCompiler.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Form/FormResultCompiler.php
261c261
< $this->loadJavascriptLib('sysext/core/Resources/Public/JavaScript/Contrib/placeholders.jquery.min.js');
---
> $this->loadJavascriptLib('sysext/core/Resources/Public/JavaScript/Contrib/placeholders.min.js');
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Form/Wizard/SuggestWizard.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Form/Wizard/SuggestWizard.php
239c239
< return !$tableConfig['ctrl']['hideTable'];
---
> return (bool)$tableConfig['ctrl']['hideTable'];
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Http/AjaxRequestHandler.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Http/AjaxRequestHandler.php
203c203
< $ajaxObj->setError('Invalid CSRF token detected for ajaxID "' . $ajaxID . '"!');
---
> $ajaxObj->setError('Invalid CSRF token detected for ajaxID "' . $ajaxID . '", reload the backend of TYPO3');
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Search/LiveSearch/LiveSearch.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Search/LiveSearch/LiveSearch.php
195d194
< $isFirst = true;
204d202
< $dbCount = $GLOBALS['TYPO3_DB']->sql_num_rows($result);
216d213
< $isFirst = false;
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Template/Components/Buttons/Action/ShortcutButton.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Template/Components/Buttons/Action/ShortcutButton.php
36,37d35
< * $extbaseButton = $buttonBar->makeShortcutButton()
< * ->setControllerContext($this->controllerContext);
39d36
< * $buttonBar->addButton($extbaseButton);
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Tree/Pagetree/ExtdirectTreeCommands.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Tree/Pagetree/ExtdirectTreeCommands.php
359c359
< if (!empty(static::getBackendUser()->uc['pageTree_temporaryMountPoint'])){
---
> if (!empty(static::getBackendUser()->uc['pageTree_temporaryMountPoint'])) {
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/Utility/BackendUtility.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/Utility/BackendUtility.php
28d27
< use TYPO3\CMS\Core\Messaging\FlashMessage;
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Classes/View/PageTreeView.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Classes/View/PageTreeView.php
66c66
< public function wrapIcon($thePageIcon, &$row)
---
> public function wrapIcon($thePageIcon, $row)
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Resources/Public/JavaScript/extjs/components/pagetree/javascript/Ext.ux.state.TreePanel.js /var/www/typo3_src-7.6.10/typo3/sysext/backend/Resources/Public/JavaScript/extjs/components/pagetree/javascript/Ext.ux.state.TreePanel.js
96c96
< var hasContentFrameValidPageId = (contentId !== '-1' && contentId !== '0');
---
> var hasContentFrameValidPageId = contentId !== '-1';
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Resources/Public/JavaScript/FormEngineFlexForm.js /var/www/typo3_src-7.6.10/typo3/sysext/backend/Resources/Public/JavaScript/FormEngineFlexForm.js
213c213,217
< previewContent += (previewContent ? ' / ' : '') + $(this).val();
---
> var content = $($.parseHTML($(this).val())).text();
> if (content.length > 50) {
> content = content.substring(0, 50) + '...';
> }
> previewContent += (previewContent ? ' / ' : '') + content;
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Resources/Public/JavaScript/FormEngineSuggest.js /var/www/typo3_src-7.6.10/typo3/sysext/backend/Resources/Public/JavaScript/FormEngineSuggest.js
44c44
< var labelEl = $('<div>').text($(element).data('label'));
---
> var labelEl = $('<div>').html($(element).data('label'));
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Resources/Public/JavaScript/FormEngineValidation.js /var/www/typo3_src-7.6.10/typo3/sysext/backend/Resources/Public/JavaScript/FormEngineValidation.js
207d206
< var origValue = $humanReadableField.val();
220,226c219,220
< if ($.inArray('password', evalList) !== -1) {
< $mainField.val(origValue);
< $humanReadableField.val(newValue);
< } else {
< $mainField.val(newValue);
< $humanReadableField.val(formattedValue);
< }
---
> $mainField.val(newValue);
> $humanReadableField.val(formattedValue);
277d270
< $field.closest(FormEngineValidation.markerSelector).addClass(FormEngineValidation.errorClass);
291d283
< $field.closest(FormEngineValidation.markerSelector).addClass(FormEngineValidation.errorClass);
314d305
< $field.closest(FormEngineValidation.markerSelector).addClass(FormEngineValidation.errorClass);
359a351,353
> // mark field
> $field.closest(FormEngineValidation.markerSelector).addClass(FormEngineValidation.errorClass);
>
490,491c484
< var theString = (value) ? FormEngineValidation.passwordDummy : '';
< returnValue = theString;
---
> // password is only a display evaluation, we ignore it
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Resources/Public/JavaScript/jsfunc.inline.js /var/www/typo3_src-7.6.10/typo3/sysext/backend/Resources/Public/JavaScript/jsfunc.inline.js
179a180
> return false;
1135c1136
< TYPO3.jQuery('#' + this.escapeObjectId(objectId) + '_label').html(value.length ? value : this.noTitleString);
---
> TYPO3.jQuery('#' + this.escapeObjectId(objectId) + '_label').text(value.length ? value : this.noTitleString);
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Resources/Public/JavaScript/LoginRefresh.js /var/www/typo3_src-7.6.10/typo3/sysext/backend/Resources/Public/JavaScript/LoginRefresh.js
207c207,208
< LoginRefresh.$loginForm.find('.modal-header h4').text(TYPO3.LLL.core.refresh_login_title);
---
> var refresh_login_title = String(TYPO3.LLL.core.refresh_login_title).replace('%s', TYPO3.configuration.username);
> LoginRefresh.$loginForm.find('.modal-header h4').text(refresh_login_title);
220c221,225
< $('<button />', {type: 'submit', form: 'beLoginRefresh', class: 'btn btn-primary', 'data-action': 'refreshSession'}).text(TYPO3.LLL.core.refresh_login_button)
---
> $('<button />', {type: 'button', class: 'btn btn-primary', 'data-action': 'refreshSession'})
> .text(TYPO3.LLL.core.refresh_login_button)
> .on('click', function(e) {
> LoginRefresh.$loginForm.find('form').submit();
> })
Only in /var/www/typo3_src-7.6.10/typo3/sysext/backend/Tests: Functional
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Tests/Unit/Controller/FormInlineAjaxControllerTest.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Tests/Unit/Controller/FormInlineAjaxControllerTest.php
17a18
> use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
63a65,218
> }
>
> /**
> * @dataProvider splitDomObjectIdDataProviderForTableName
> * @param string $dataStructure
> * @param string $expectedTableName
> * @test
> *
> * test for the flexform domobject identifier split
> */
> public function splitDomObjectIdResolvesTablenameCorrectly($dataStructure, $expectedTableName)
> {
> $mock = $this->getAccessibleMock(FormInlineAjaxController::class, ['dummy'], [], '', false);
> $result = $mock->_call('splitDomObjectId', $dataStructure);
> $this->assertSame($expectedTableName, $result[1]);
> }
>
> /**
> * @return array
> */
> public function splitDomObjectIdDataProviderForTableName()
> {
> return [
> 'news new' => [
> 'data-335-tx_news_domain_model_news-2-content_elements-tt_content-999-pi_flexform---data---sheet.tabGeneral---lDEF---settings.related_files---vDEF-tx_news_domain_model_file',
> 'tx_news_domain_model_file'
> ],
> 'load existing child' => [
> 'data-318-tx_styleguide_flex-4-flex_3---data---sInline---lDEF---inline_1---vDEF-tx_styleguide_flex_flex_3_inline_1_child-4',
> 'tx_styleguide_flex_flex_3_inline_1_child'
> ],
> 'create new child' => [
> 'data-318-tx_styleguide_flex-4-flex_3---data---sInline---lDEF---inline_1---vDEF-tx_styleguide_flex_flex_3_inline_1_child',
> 'tx_styleguide_flex_flex_3_inline_1_child'
> ],
> 'insert new after' => [
> 'data-336-tt_content-1000-pi_flexform---data---sheet.tabGeneral---lDEF---settings.related_files---vDEF-tx_news_domain_model_file-6',
> 'tx_news_domain_model_file'
> ],
> 'fal simple' => [
> 'data-336-tt_content-998-pi_flexform---data---sheet.tabGeneral---lDEF---settings.image---vDEF-sys_file_reference-837',
> 'sys_file_reference'
> ],
> 'fal down deep' => [
> 'data-335-tx_news_domain_model_news-2-content_elements-tt_content-999-pi_flexform---data---sheet.tabGeneral---lDEF---settings.image---vDEF-sys_file_reference',
> 'sys_file_reference'
> ],
> 'new record after others' => ['data-336-tt_content-1000-pi_flexform---data---sheet.tabGeneral---lDEF---settings.related_files---vDEF-tx_news_domain_model_file-NEW5757f36287214984252204', 'tx_news_domain_model_file'],
> ];
> }
>
> /**
> * @dataProvider splitDomObjectIdDataProviderForFlexFormPath
> *
> * @param string $dataStructure
> * @param string $expectedFlexformPath
> *
> * @test
> *
> * test for the flexform domobject identifier split
> */
> public function splitDomObjectIdResolvesFlexformPathCorrectly($dataStructure, $expectedFlexformPath)
> {
> $mock = $this->getAccessibleMock(FormInlineAjaxController::class, ['dummy'], [], '', false);
> $result = $mock->_call('splitDomObjectId', $dataStructure);
> $this->assertSame($expectedFlexformPath, $result[0]);
> }
>
> /**
> * @return array
> */
> public function splitDomObjectIdDataProviderForFlexFormPath()
> {
> return [
> 'news new' => [
> 'data-335-tx_news_domain_model_news-2-content_elements-tt_content-999-pi_flexform---data---sheet.tabGeneral---lDEF---settings.related_files---vDEF-tx_news_domain_model_file',
> 'sheet.tabGeneral:lDEF:settings.related_files:vDEF'
> ],
> 'load existing child' => [
> 'data-318-tx_styleguide_flex-4-flex_3---data---sInline---lDEF---inline_1---vDEF-tx_styleguide_flex_flex_3_inline_1_child-4',
> 'sInline:lDEF:inline_1:vDEF'
> ],
> 'create new child' => [
> 'data-318-tx_styleguide_flex-4-flex_3---data---sInline---lDEF---inline_1---vDEF-tx_styleguide_flex_flex_3_inline_1_child',
> 'sInline:lDEF:inline_1:vDEF'
> ],
> 'insert new after' => [
> 'data-336-tt_content-1000-pi_flexform---data---sheet.tabGeneral---lDEF---settings.related_files---vDEF-tx_news_domain_model_file-6',
> 'sheet.tabGeneral:lDEF:settings.related_files:vDEF'
> ],
> 'fal simple' => [
> 'data-336-tt_content-998-pi_flexform---data---sheet.tabGeneral---lDEF---settings.image---vDEF-sys_file_reference-837',
> 'sheet.tabGeneral:lDEF:settings.image:vDEF'
> ],
> 'fal down deep' => [
> 'data-335-tx_news_domain_model_news-2-content_elements-tt_content-999-pi_flexform---data---sheet.tabGeneral---lDEF---settings.image---vDEF-sys_file_reference',
> 'sheet.tabGeneral:lDEF:settings.image:vDEF'
> ],
> 'new record after others' => [
> 'data-336-tt_content-1000-pi_flexform---data---sheet.tabGeneral---lDEF---settings.related_files---vDEF-tx_news_domain_model_file-NEW5757f36287214984252204',
> 'sheet.tabGeneral:lDEF:settings.related_files:vDEF'
> ],
> ];
> }
>
> /**
> * Fallback for IRRE items without inline view attribute
> * @issue https://forge.typo3.org/issues/76561
> *
> * @test
> */
> public function getInlineExpandCollapseStateArraySwitchesToFallbackIfTheBackendUserDoesNotHaveAnUCInlineViewProperty()
> {
> $backendUserProphecy = $this->prophesize(BackendUserAuthentication::class);
> $backendUserProphecy->uc = [];
> $backendUser = $backendUserProphecy->reveal();
>
> $mockObject = $this->getAccessibleMock(
> FormInlineAjaxController::class,
> ['getBackendUserAuthentication'],
> [],
> '',
> false
> );
> $mockObject->method('getBackendUserAuthentication')->willReturn($backendUser);
> $result = $mockObject->_call('getInlineExpandCollapseStateArray');
>
> $this->assertEmpty($result);
> }
>
>
> /**
> * Unserialize uc inline view string for IRRE item
> * @issue https://forge.typo3.org/issues/76561
> *
> * @test
> */
> public function getInlineExpandCollapseStateArrayWillUnserializeUCInlineViewPropertyAsAnArrayWithData()
> {
> $backendUserProphecy = $this->prophesize(BackendUserAuthentication::class);
> $backendUserProphecy->uc = ['inlineView' => serialize(['foo' => 'bar'])];
> $backendUser = $backendUserProphecy->reveal();
>
> $mockObject = $this->getAccessibleMock(
> FormInlineAjaxController::class,
> ['getBackendUserAuthentication'],
> [],
> '',
> false
> );
> $mockObject->method('getBackendUserAuthentication')->willReturn($backendUser);
> $result = $mockObject->_call('getInlineExpandCollapseStateArray');
>
> $this->assertNotEmpty($result);
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Tests/Unit/Form/Element/InputTextElementTest.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Tests/Unit/Form/Element/InputTextElementTest.php
51d50
<
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaSelectItemsTest.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaSelectItemsTest.php
1325a1326,1334
> 'replace CURRENT_PID within FlexForm' => [
> 'AND fTable.uid=###CURRENT_PID###',
> 'pages.uid=fTable.pid AND pages.deleted=0 AND 1=1 AND fTable.uid=77',
> [
> 'flexParentDatabaseRow' => [
> 'pid' => '77',
> ],
> ],
> ],
diff -r /var/www/typo3_src-7.6.9/typo3/sysext/backend/Tests/Unit/Utility/BackendUtilityTest.php /var/www/typo3_src-7.6.10/typo3/sysext/backend/Tests/Unit/Utility/BackendUtilityTest.php
1067c1067,1068
< public function dateTimeAgeReturnsCorrectValues() {
---
> public function dateTimeAgeReturnsCorrectValues()
> {
    (1-1/1)