b13 / container

A TYPO3 Extension for creating custom nested content elements
GNU General Public License v2.0
165 stars 62 forks source link

Sorting error on copying translated contentElements #500

Open dkruse-atlantisdx opened 3 months ago

dkruse-atlantisdx commented 3 months ago

Hello, i got an error report by a colleague, mentioning the english translation of a german page is sorted on top or at the bottom of the page. After investigation this issue i found that the problem comes from the b13/container extension, and exists on multiple TYPO3 instances. This occures since the version 2.0.0 of this extension.

We found out it has to do with the class B13\Container\Hooks\Datahandler\CommandMapBeforeStartHook Using the class from v1.6.1 sort the translated contentElements correctly. We are currently using v2.3.6, where the translated element is sorted wrong.

The resulting "cmdmap" looks right, so i don't see why this is the cause. Another colleague claims the error is on line 141 and should be: if ($this->tcaRegistry->isContainerElement($record['CType'])) { continue; }

It seems the following target points to the last element inside of the container, instead of the container itself, which is the element before the element that we pasted into the page. That inserted contentElement could be any contentElement or a container.

Thanks for the extension and for looking into it. Kind Regards Daniel Kruse

dkruse-atlantisdx commented 3 months ago

Steps to reproduce:

  1. copy some Content Element with translation (connected mode)
  2. select a different page with translation (connected mode)
  3. paste element between container elements

Actual result:

  1. pasted content element is in the correct spot
  2. translation of the content element is either on top or at bottom in page view and frontend

Expected result:

  1. pasted content element is in the correct spot
  2. translated content element is in the same spot between existing elements
DanielSiepmann commented 2 months ago

To me it looks like this is not necessary related to the language. It looks like a duplication of #458.

I guess this bug got introduced via #149 with a1cc4de40d8d8bd005b0f21d2605dda9f1cdb000. With the following explanation:

 * element after a container
  * old: -uid of container is used (leeds to broken sorting)
  * new: -uid of last child in containers last column is used
firmenpunkt commented 1 month ago

A similar issue I also noticed, when I move a translated container element per drag and drop in page mode (connected mode) inside the same page. The translated element stays in the original position, the original element stays in de new position. Interestingly, only on the backend. It moves to the desired position on the frontend. Per trial and error I've found out that in my case, if I move the element from the oroginal position around, and i release it again at the same place, the translated element goes to the desired position on the backend. too. I don't know what happens in the database. The command suggested in #458 didn't help me, either.