From acff9da490244cd405a4ae12eb7f034a3b39cfb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20E=C3=9Fl?= <indy.essl@gmail.com> Date: Mon, 9 Mar 2020 19:22:55 +0100 Subject: [PATCH] [BUGFIX] Keep language or colPos when moving a record in list module When copying a tt_content record in list module, the DataHandler would internally look up the 'copyAfterDuplFields' settings in TCA and ensure, that those fields are copied from its new neighboring record. In TYPO3 core, the 'copyAfterDuplFields' settings are only used by the table tt_content with 'colPos,sys_language_uid' as its values. This makes sense for copying records, but the same behaviour, that stems from TYPO3s very early days, was also used when records where moved around with the DataHandler. When an editor changes the position of a tt_content record in the list module, the record would then always automatically adopt the colPos/sys_language_uid of its new neighbour, which is usually not expected or desired, and often leads to much confusion and broken content grids. The code responsible for 'copyAfterDuplFields' is now removed from DataHandler::moveRecord_raw(), while retaining the behaviour for DataHandler::copyRecord(). Moving around tt_content records in the page module to different columns or languages is not affected by this change, as the colPos/sys_language_uid changes there are set in a separate update statement. Resolves: #72988 Resolves: #59901 Resolves: #39798 Resolves: #25216 Resolves: #14873 Releases: master, 9.5 Change-Id: Ic9c57fe2712b0996bc7b53cce4bcdc275c2820cb Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/63646 Tested-by: TYPO3com <noreply@typo3.com> Tested-by: Georg Ringer <georg.ringer@gmail.com> Tested-by: Benni Mack <benni@typo3.org> Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de> Reviewed-by: Georg Ringer <georg.ringer@gmail.com> Reviewed-by: Benni Mack <benni@typo3.org> Reviewed-by: Oliver Hader <oliver.hader@typo3.org> Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de> --- .../core/Classes/DataHandling/DataHandler.php | 8 -------- .../Modify/DataSet/changeContentSorting.csv | 4 ++-- .../changeContentSortingAndCopyDraftPage.csv | 20 +++++++++---------- .../changeContentSortingAndCopyLivePage.csv | 4 ++-- .../changeContentSortingNDeleteLiveRecord.csv | 4 ++-- ...changeContentSortingNDeleteMovedRecord.csv | 4 ++-- ...veContentToDifferentPageNChangeSorting.csv | 4 ++-- .../Publish/DataSet/changeContentSorting.csv | 4 ++-- ...veContentToDifferentPageNChangeSorting.csv | 4 ++-- 9 files changed, 24 insertions(+), 32 deletions(-) diff --git a/typo3/sysext/core/Classes/DataHandling/DataHandler.php b/typo3/sysext/core/Classes/DataHandling/DataHandler.php index 2a31af7018d2..108ed64566bc 100644 --- a/typo3/sysext/core/Classes/DataHandling/DataHandler.php +++ b/typo3/sysext/core/Classes/DataHandling/DataHandler.php @@ -4115,10 +4115,6 @@ class DataHandler implements LoggerAwareInterface if ($table === 'pages') { $this->fixUniqueInSiteForSubpages((int)$uid); } - // fixCopyAfterDuplFields - if ($origDestPid < 0) { - $this->fixCopyAfterDuplFields($table, $uid, abs($origDestPid), 1); - } } elseif ($this->enableLogging) { $destPropArr = $this->getRecordProperties('pages', $destPid); $this->log($table, $uid, SystemLogDatabaseAction::MOVE, 0, SystemLogErrorClassification::USER_ERROR, 'Attempt to move page \'%s\' (%s) to inside of its own rootline (at page \'%s\' (%s))', 10, [$propArr['header'], $uid, $destPropArr['header'], $destPid], $propArr['pid']); @@ -4178,10 +4174,6 @@ class DataHandler implements LoggerAwareInterface if ($table === 'pages') { $this->fixUniqueInSiteForSubpages((int)$uid); } - // fixCopyAfterDuplFields - if ($origDestPid < 0) { - $this->fixCopyAfterDuplFields($table, $uid, abs($origDestPid), 1); - } } elseif ($this->enableLogging) { $destPropArr = $this->getRecordProperties('pages', $destPid); $this->log($table, $uid, SystemLogDatabaseAction::MOVE, 0, SystemLogErrorClassification::USER_ERROR, 'Attempt to move page \'%s\' (%s) to inside of its own rootline (at page \'%s\' (%s))', 10, [$propArr['header'], $uid, $destPropArr['header'], $destPid], $propArr['pid']); diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSorting.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSorting.csv index 07e89e89c3a7..550aa4046339 100644 --- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSorting.csv +++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSorting.csv @@ -14,6 +14,6 @@ ,321,-1,256,0,0,0,0,297,1,4,0,297,0,"Regular Element #1" ,322,89,640,0,0,0,0,0,1,3,0,0,297,"[MOVE-TO PLACEHOLDER for #297, WS#1]" ,323,-1,384,0,1,321,297,301,1,4,0,301,0,"[Translate to Dansk:] Regular Element #1" -,324,89,576,0,0,297,0,0,1,3,0,0,301,"[MOVE-TO PLACEHOLDER for #301, WS#1]" +,324,89,576,0,1,297,0,0,1,3,0,0,301,"[MOVE-TO PLACEHOLDER for #301, WS#1]" ,325,-1,448,0,2,321,301,302,1,4,0,302,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1" -,326,89,544,0,0,297,0,0,1,3,0,0,302,"[MOVE-TO PLACEHOLDER for #302, WS#1]" +,326,89,544,0,2,297,0,0,1,3,0,0,302,"[MOVE-TO PLACEHOLDER for #302, WS#1]" diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSortingAndCopyDraftPage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSortingAndCopyDraftPage.csv index 957ec3965548..989d2a256e4b 100644 --- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSortingAndCopyDraftPage.csv +++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSortingAndCopyDraftPage.csv @@ -22,9 +22,9 @@ ,321,-1,256,0,0,0,0,297,1,4,0,297,0,"Regular Element #1" ,322,89,640,0,0,0,0,0,1,3,0,0,297,"[MOVE-TO PLACEHOLDER for #297, WS#1]" ,323,-1,384,0,1,321,297,301,1,4,0,301,0,"[Translate to Dansk:] Regular Element #1" -,324,89,576,0,0,297,0,0,1,3,0,0,301,"[MOVE-TO PLACEHOLDER for #301, WS#1]" +,324,89,576,0,1,297,0,0,1,3,0,0,301,"[MOVE-TO PLACEHOLDER for #301, WS#1]" ,325,-1,448,0,2,321,301,302,1,4,0,302,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1" -,326,89,544,0,0,297,0,0,1,3,0,0,302,"[MOVE-TO PLACEHOLDER for #302, WS#1]" +,326,89,544,0,2,297,0,0,1,3,0,0,302,"[MOVE-TO PLACEHOLDER for #302, WS#1]" ,327,91,256,0,0,0,0,299,1,1,0,0,0,"Regular Element #3" ,328,-1,256,0,0,0,0,299,1,-1,0,327,0,"Regular Element #3" ,329,91,128,0,1,327,327,300,1,1,0,0,0,"[Translate to Dansk:] Regular Element #3" @@ -33,11 +33,11 @@ ,332,-1,64,0,0,0,0,298,1,-1,0,331,0,"Regular Element #2" ,333,91,32,0,0,0,0,297,1,1,0,0,0,"Regular Element #1" ,334,-1,32,0,0,0,0,297,1,-1,0,333,0,"Regular Element #1" -,335,91,16,0,1,333,333,324,1,1,0,0,0,"[Translate to Dansk:] Regular Element #1" -,336,-1,16,0,1,333,333,324,1,-1,0,335,0,"[Translate to Dansk:] Regular Element #1" -,337,91,8,0,2,333,333,326,1,1,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1" -,338,-1,8,0,2,333,333,326,1,-1,0,337,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1" -,339,91,4,0,1,333,333,301,1,1,0,0,0,"[Translate to Dansk:] Regular Element #1" -,340,-1,4,0,1,333,333,301,1,-1,0,339,0,"[Translate to Dansk:] Regular Element #1" -,341,91,2,0,2,333,339,302,1,1,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1" -,342,-1,2,0,2,333,339,302,1,-1,0,341,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1" +,335,91,16,0,1,333,333,301,1,1,0,0,0,"[Translate to Dansk:] Regular Element #1" +,336,-1,16,0,1,333,333,301,1,-1,0,335,0,"[Translate to Dansk:] Regular Element #1" +,337,91,8,0,1,333,333,324,1,1,0,0,0,"[Translate to Dansk:] Regular Element #1" +,338,-1,8,0,1,333,333,324,1,-1,0,337,0,"[Translate to Dansk:] Regular Element #1" +,339,91,4,0,2,333,335,302,1,1,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1" +,340,-1,4,0,2,333,335,302,1,-1,0,339,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1" +,341,91,2,0,2,333,333,326,1,1,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1" +,342,-1,2,0,2,333,333,326,1,-1,0,341,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1" diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSortingAndCopyLivePage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSortingAndCopyLivePage.csv index 2e1c056f5ea6..88b4301fc460 100644 --- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSortingAndCopyLivePage.csv +++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSortingAndCopyLivePage.csv @@ -21,9 +21,9 @@ ,321,-1,256,0,0,0,0,297,1,4,0,297,0,"Regular Element #1" ,322,89,640,0,0,0,0,0,1,3,0,0,297,"[MOVE-TO PLACEHOLDER for #297, WS#1]" ,323,-1,384,0,1,321,297,301,1,4,0,301,0,"[Translate to Dansk:] Regular Element #1" -,324,89,576,0,0,297,0,0,1,3,0,0,301,"[MOVE-TO PLACEHOLDER for #301, WS#1]" +,324,89,576,0,1,297,0,0,1,3,0,0,301,"[MOVE-TO PLACEHOLDER for #301, WS#1]" ,325,-1,448,0,2,321,301,302,1,4,0,302,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1" -,326,89,544,0,0,297,0,0,1,3,0,0,302,"[MOVE-TO PLACEHOLDER for #302, WS#1]" +,326,89,544,0,2,297,0,0,1,3,0,0,302,"[MOVE-TO PLACEHOLDER for #302, WS#1]" ,327,91,256,0,0,0,0,299,0,0,0,0,0,"Regular Element #3" ,328,91,128,0,1,327,327,300,0,0,0,0,0,"[Translate to Dansk:] Regular Element #3" ,329,91,64,0,0,0,0,298,0,0,0,0,0,"Regular Element #2" diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSortingNDeleteLiveRecord.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSortingNDeleteLiveRecord.csv index 42da16d87e7e..925ffe002dd7 100644 --- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSortingNDeleteLiveRecord.csv +++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSortingNDeleteLiveRecord.csv @@ -14,6 +14,6 @@ ,321,-1,256,1,0,0,0,297,1,4,0,297,0,"Regular Element #1" ,322,89,640,1,0,0,0,0,1,3,0,0,297,"[MOVE-TO PLACEHOLDER for #297, WS#1]" ,323,-1,384,1,1,321,297,301,1,4,0,301,0,"[Translate to Dansk:] Regular Element #1" -,324,89,576,1,0,297,0,0,1,3,0,0,301,"[MOVE-TO PLACEHOLDER for #301, WS#1]" +,324,89,576,1,1,297,0,0,1,3,0,0,301,"[MOVE-TO PLACEHOLDER for #301, WS#1]" ,325,-1,448,1,2,321,301,302,1,4,0,302,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1" -,326,89,544,1,0,297,0,0,1,3,0,0,302,"[MOVE-TO PLACEHOLDER for #302, WS#1]" +,326,89,544,1,2,297,0,0,1,3,0,0,302,"[MOVE-TO PLACEHOLDER for #302, WS#1]" diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSortingNDeleteMovedRecord.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSortingNDeleteMovedRecord.csv index 7f1635fbcd28..1823b0c8e7a5 100644 --- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSortingNDeleteMovedRecord.csv +++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/changeContentSortingNDeleteMovedRecord.csv @@ -15,6 +15,6 @@ ,322,89,640,1,0,0,0,0,1,3,0,0,297,"[MOVE-TO PLACEHOLDER for #297, WS#1]" "# @todo Moved state is not reverted for translated records",,,,,,,,,,,,,, ,323,-1,384,0,1,321,297,301,1,4,0,301,0,"[Translate to Dansk:] Regular Element #1" -,324,89,576,0,0,297,0,0,1,3,0,0,301,"[MOVE-TO PLACEHOLDER for #301, WS#1]" +,324,89,576,0,1,297,0,0,1,3,0,0,301,"[MOVE-TO PLACEHOLDER for #301, WS#1]" ,325,-1,448,0,2,321,301,302,1,4,0,302,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1" -,326,89,544,0,0,297,0,0,1,3,0,0,302,"[MOVE-TO PLACEHOLDER for #302, WS#1]" +,326,89,544,0,2,297,0,0,1,3,0,0,302,"[MOVE-TO PLACEHOLDER for #302, WS#1]" diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/moveContentToDifferentPageNChangeSorting.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/moveContentToDifferentPageNChangeSorting.csv index a2a24df71659..4a0059165e8b 100644 --- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/moveContentToDifferentPageNChangeSorting.csv +++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/moveContentToDifferentPageNChangeSorting.csv @@ -16,6 +16,6 @@ ,323,-1,256,0,0,0,0,297,1,4,0,297,0,"Regular Element #1" ,324,90,192,0,0,0,0,0,1,3,0,0,297,"[MOVE-TO PLACEHOLDER for #297, WS#1]" ,325,-1,384,0,1,323,297,301,1,4,0,301,0,"[Translate to Dansk:] Regular Element #1" -,326,90,160,0,0,297,0,0,1,3,0,0,301,"[MOVE-TO PLACEHOLDER for #301, WS#1]" +,326,90,160,0,1,297,0,0,1,3,0,0,301,"[MOVE-TO PLACEHOLDER for #301, WS#1]" ,327,-1,448,0,2,323,301,302,1,4,0,302,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1" -,328,90,144,0,0,297,0,0,1,3,0,0,302,"[MOVE-TO PLACEHOLDER for #302, WS#1]" +,328,90,144,0,2,297,0,0,1,3,0,0,302,"[MOVE-TO PLACEHOLDER for #302, WS#1]" diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/changeContentSorting.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/changeContentSorting.csv index 019685019886..eae14497884f 100644 --- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/changeContentSorting.csv +++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/changeContentSorting.csv @@ -12,6 +12,6 @@ ,312,90,768,0,2,0,311,311,0,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #10" ,320,-1,512,0,0,0,0,298,2,2,0,298,0,"Regular Element #2" ,323,-1,384,0,1,321,297,301,1,4,0,301,0,"[Translate to Dansk:] Regular Element #1" -,324,89,576,0,0,297,0,0,1,3,0,0,301,"[MOVE-TO PLACEHOLDER for #301, WS#1]" +,324,89,576,0,1,297,0,0,1,3,0,0,301,"[MOVE-TO PLACEHOLDER for #301, WS#1]" ,325,-1,448,0,2,321,301,302,1,4,0,302,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1" -,326,89,544,0,0,297,0,0,1,3,0,0,302,"[MOVE-TO PLACEHOLDER for #302, WS#1]" +,326,89,544,0,2,297,0,0,1,3,0,0,302,"[MOVE-TO PLACEHOLDER for #302, WS#1]" diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/moveContentToDifferentPageNChangeSorting.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/moveContentToDifferentPageNChangeSorting.csv index 218700a5182b..f16aaea3525a 100644 --- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/moveContentToDifferentPageNChangeSorting.csv +++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/moveContentToDifferentPageNChangeSorting.csv @@ -12,6 +12,6 @@ ,312,90,768,0,2,0,311,311,0,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #10" ,320,-1,512,0,0,0,0,298,2,2,0,298,0,"Regular Element #2" ,325,-1,384,0,1,323,297,301,1,4,0,301,0,"[Translate to Dansk:] Regular Element #1" -,326,90,160,0,0,297,0,0,1,3,0,0,301,"[MOVE-TO PLACEHOLDER for #301, WS#1]" +,326,90,160,0,1,297,0,0,1,3,0,0,301,"[MOVE-TO PLACEHOLDER for #301, WS#1]" ,327,-1,448,0,2,323,301,302,1,4,0,302,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1" -,328,90,144,0,0,297,0,0,1,3,0,0,302,"[MOVE-TO PLACEHOLDER for #302, WS#1]" +,328,90,144,0,2,297,0,0,1,3,0,0,302,"[MOVE-TO PLACEHOLDER for #302, WS#1]" -- GitLab