From 651802059456b3c2d0101bd41fea678ab2e9b8a8 Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Fri, 22 Apr 2022 14:02:55 +0200 Subject: [PATCH 1/4] [TASK] Add patches for debugging imports --- .../core_fail-fatally-on-failed-inserts.diff | 37 +++++++++++++++++++ ...exp_dont-fail-on-changed-image-hashes.diff | 12 ++++++ 2 files changed, 49 insertions(+) create mode 100644 build/dev/core_fail-fatally-on-failed-inserts.diff create mode 100644 build/dev/impexp_dont-fail-on-changed-image-hashes.diff diff --git a/build/dev/core_fail-fatally-on-failed-inserts.diff b/build/dev/core_fail-fatally-on-failed-inserts.diff new file mode 100644 index 0000000..0010f48 --- /dev/null +++ b/build/dev/core_fail-fatally-on-failed-inserts.diff @@ -0,0 +1,37 @@ +*** webroot/typo3/sysext/core/Classes/DataHandling/DataHandler.php.orig 2022-04-22 13:15:26.314780488 +0200 +--- webroot/typo3/sysext/core/Classes/DataHandling/DataHandler.php 2022-04-22 13:15:39.018129312 +0200 +*************** class DataHandler implements LoggerAware +*** 7431,7446 **** + } + $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($table); + $insertErrorMessage = ''; +! try { + // Execute the INSERT query: + $connection->insert( + $table, + $fieldArray, + $typeArray + ); +! } catch (DBALException $e) { +! $insertErrorMessage = $e->getPrevious()->getMessage(); +! } + // If succees, do...: + if ($insertErrorMessage === '') { + // Set mapping for NEW... -> real uid: +--- 7431,7446 ---- + } + $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($table); + $insertErrorMessage = ''; +! //try { + // Execute the INSERT query: + $connection->insert( + $table, + $fieldArray, + $typeArray + ); +! //} catch (DBALException $e) { +! // $insertErrorMessage = $e->getPrevious()->getMessage(); +! //} + // If succees, do...: + if ($insertErrorMessage === '') { + // Set mapping for NEW... -> real uid: diff --git a/build/dev/impexp_dont-fail-on-changed-image-hashes.diff b/build/dev/impexp_dont-fail-on-changed-image-hashes.diff new file mode 100644 index 0000000..5b572f3 --- /dev/null +++ b/build/dev/impexp_dont-fail-on-changed-image-hashes.diff @@ -0,0 +1,12 @@ +--- webroot/typo3/sysext/impexp/Classes/Import.php 2022-04-22 12:43:09.439221153 +0200 ++++ webroot/typo3/sysext/impexp/Classes/Import.php 2022-04-22 12:43:27.169242298 +0200 +@@ -446,7 +446,8 @@ + } + + if ($newFile->getSha1() !== $fileRecord['sha1']) { +- $this->error('Error: The hash of the written file is not identical to the import data! File could be corrupted! File: "' . $fileRecord['identifier'] . '" with storage uid "' . $fileRecord['storage'] . '"'); ++ print('Error: The hash of the written file is not identical to the import data! File could be corrupted! File: "' . $fileRecord['identifier'] . '" with storage uid "' . $fileRecord['storage'] . '"'); ++ print(PHP_EOL); + } + } + From c72f1fd4deed1ee95de656c7633e2e5b0291541e Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Fri, 22 Apr 2022 14:06:24 +0200 Subject: [PATCH 2/4] [TASK] Add Makefile action to add upstreams --- Makefile | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1c28fd6 --- /dev/null +++ b/Makefile @@ -0,0 +1,3 @@ +add_upstreams: + git remote add upstream-dt git@git.datentonne.net:typo3/template_aide.git + git remote add upstream-gs ssh://vcs@phabricator.glanzstueck.agency/source/typo3-template_aide.git From 138c9373ff65f9c6fa14d9e30dd8071ed8dc68ac Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Wed, 27 Apr 2022 13:28:02 +0200 Subject: [PATCH 3/4] [TASK] Enable site config utility to handle references --- Classes/Utility/SiteConfigUtility.php | 18 ++++++++++++++++-- Classes/ViewHelpers/SiteConfigViewHelper.php | 9 ++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/Classes/Utility/SiteConfigUtility.php b/Classes/Utility/SiteConfigUtility.php index ab88031..76feb6d 100644 --- a/Classes/Utility/SiteConfigUtility.php +++ b/Classes/Utility/SiteConfigUtility.php @@ -15,6 +15,7 @@ namespace Cjel\TemplatesAide\Utility; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface; use TYPO3\CMS\Extbase\Object\ObjectManager; +use TYPO3\CMS\Core\TypoScript\Parser\TypoScriptParser; /** * Utility to work with site config @@ -35,20 +36,33 @@ class SiteConfigUtility $objectManager = GeneralUtility::makeInstance( ObjectManager::class ); + $typoScriptParser = GeneralUtility::makeInstance( + TypoScriptParser::class + ); $configurationManager = $objectManager->get( ConfigurationManagerInterface::class ); $typoscript = $configurationManager->getConfiguration( ConfigurationManagerInterface::CONFIGURATION_TYPE_FULL_TYPOSCRIPT ); - $typoscript = GeneralUtility::removeDotsFromTS($typoscript); $siteConfig = $typoscript; if ($limitToSiteConfig) { - $siteConfig = $typoscript['config']['site']; + $siteConfig = $typoscript['config.']['site.']; } $current = &$siteConfig; foreach ($pathParts as $key) { + if ($current[$key . '.']) { + $key .= '.'; + } $current = &$current[$key]; + if (isset($current[0]) && $current[0] === '<') { + $searchkey = trim(substr($current, 1)); + list($name, $conf) = $typoScriptParser->getVal( + $searchkey, + $typoscript + ); + $current = $conf; + } } if (is_array($current) && array_key_exists('value', $current) diff --git a/Classes/ViewHelpers/SiteConfigViewHelper.php b/Classes/ViewHelpers/SiteConfigViewHelper.php index 3201bd4..1d83ad1 100644 --- a/Classes/ViewHelpers/SiteConfigViewHelper.php +++ b/Classes/ViewHelpers/SiteConfigViewHelper.php @@ -34,6 +34,13 @@ class SiteConfigViewHelper extends AbstractViewHelper 'The config key to get', true ); + $this->registerArgument( + 'siteConfig', + 'bool', + 'Limit the typoscript to the config.site part', + false, + true + ); } /** @@ -51,7 +58,7 @@ class SiteConfigViewHelper extends AbstractViewHelper ) { return SiteConfigUtility::getByPath( $arguments['key'], - false + $arguments['siteConfig'] ); } } From 43c088850bcd3786790e2d424dc969f7e7bd20d7 Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Thu, 28 Apr 2022 13:07:40 +0200 Subject: [PATCH 4/4] [TASK] Add user settings option to disable drag n drop confirmation --- Configuration/TCA/Overrides/be_users.php | 4 ++ Resources/Private/Language/de.locallang.xlf | 6 ++- Resources/Private/Language/locallang.xlf | 5 ++- ...nd_option-disable-drag-and-drop-modal.diff | 41 +++++++++++++++++++ ext_tables.php | 11 +++++ 5 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 Configuration/TCA/Overrides/be_users.php create mode 100644 build/patches/backend_option-disable-drag-and-drop-modal.diff diff --git a/Configuration/TCA/Overrides/be_users.php b/Configuration/TCA/Overrides/be_users.php new file mode 100644 index 0000000..102ba9f --- /dev/null +++ b/Configuration/TCA/Overrides/be_users.php @@ -0,0 +1,4 @@ + - +
LFEditor
@@ -9,6 +9,10 @@ + + + + diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf index bb353e3..a2b7adb 100644 --- a/Resources/Private/Language/locallang.xlf +++ b/Resources/Private/Language/locallang.xlf @@ -1,6 +1,6 @@ - +
LFEditor
@@ -8,6 +8,9 @@ + + + diff --git a/build/patches/backend_option-disable-drag-and-drop-modal.diff b/build/patches/backend_option-disable-drag-and-drop-modal.diff new file mode 100644 index 0000000..38a0b98 --- /dev/null +++ b/build/patches/backend_option-disable-drag-and-drop-modal.diff @@ -0,0 +1,41 @@ +--- a/Resources/Public/JavaScript/SvgTree.js 2022-04-28 12:32:01.961189044 +0200 ++++ b/Resources/Public/JavaScript/SvgTree.js 2022-04-28 12:32:06.047858227 +0200 +@@ -37,6 +37,7 @@ + showCheckboxes: false, + showIcons: false, + allowRecursiveDelete: false, ++ disableDragModal: false, + marginTop: 15, + nodeHeight: 20, + indentWidth: 16, +--- a/Resources/Public/JavaScript/PageTree/PageTreeDragDrop.js 2022-04-28 11:43:41.046705421 +0200 ++++ b/Resources/Public/JavaScript/PageTree/PageTreeDragDrop.js 2022-04-28 12:30:40.741138721 +0200 +@@ -275,6 +275,10 @@ + var modalText = options.position === 'in' ? TYPO3.lang['mess.move_into'] : TYPO3.lang['mess.move_after']; + modalText = modalText.replace('%s', options.node.name).replace('%s', options.target.name); + ++ if (tree.settings.disableDragModal) { ++ options.command = 'move'; ++ tree.sendChangeCommand(options); ++ } else { + Modal.confirm( + TYPO3.lang.move_page, + modalText, +@@ -307,6 +311,7 @@ + + Modal.dismiss(); + }); ++ } + } else if (tree.nodeIsOverDelete) { + var options = _this.changeNodePosition({droppedNode: droppedNode, command: 'delete'}); + if (tree.settings.displayDeleteConfirmation) { +--- a/Classes/Controller/Page/TreeController.php 2022-04-28 13:00:20.025466105 +0200 ++++ b/Classes/Controller/Page/TreeController.php 2022-04-28 13:00:22.312133921 +0200 +@@ -155,6 +155,7 @@ + 'doktypes' => $this->getDokTypes(), + 'displayDeleteConfirmation' => $this->getBackendUser()->jsConfirmation(JsConfirmation::DELETE), + 'temporaryMountPoint' => $this->getMountPointPath((int)($this->getBackendUser()->uc['pageTree_temporaryMountPoint'] ?? 0)), ++ 'disableDragModal' => !empty($this->getBackendUser()->uc['disableDragModal']) + ]; + + return new JsonResponse($configuration); diff --git a/ext_tables.php b/ext_tables.php index 4bf828b..2438057 100644 --- a/ext_tables.php +++ b/ext_tables.php @@ -65,3 +65,14 @@ call_user_func( } ); + +$GLOBALS['TYPO3_USER_SETTINGS']['columns']['disableDragModal'] = [ + 'type' => 'check', + 'label' => 'LLL:EXT:templates_aide/Resources/Private/Language/locallang.xlf:disableDragModal', +]; +$GLOBALS['TYPO3_USER_SETTINGS']['showitem'] = str_replace( + 'recursiveDelete', + 'recursiveDelete,disableDragModal', + $GLOBALS['TYPO3_USER_SETTINGS']['showitem'], +); +