FluidTYPO3 / flux

TYPO3 extension Flux: Dynamic Fluid FlexForms
https://fluidtypo3.org
145 stars 213 forks source link

Paste (copy/move), drag-n-drop and localisation bugs #573

Closed NamelessCoder closed 9 years ago

NamelessCoder commented 10 years ago

This issue is the single place to report any type of issue of this type:

"My record is incorrectly positioned, contains incorrect values or was not created as expected after performing a paste/drag-n-drop command or after creating a localised version of the original record"

If your bug fits this description, report it here!

If any bugs in the mentioned areas still exist after May 28th 2014 please report them here instead of creating new issues. Before you report problems, make sure your Flux repository is checked out on the development branch and that you have pulled (or possibly reset) to obtain the latest changes.

Currently known bugs in copying:

https://review.typo3.org/#/c/30633/ which ensures passing the field name while TYPO3 iterates over fields of a record. Without this patch, the logic which retrieves files stored in FlexForm references, may in some cases fail to detect the existence of said references, because Flux receives a NULL field name and thus may return an incorrect Form instance (read: resolves the Provider with highest priority for the table while ignoring the field name in priority verdict) which does not contain the correct definitions for the record field currently being processed. Furthermore, due to Flux tracking which Provider was called with a certain field, Flux was unable to execute any but the first Provider detected through this logic in TYPO3. Applying the patch passes the field name and Flux returns the correct data structure when TYPO3 iterates record fields to detect file references in FlexForm fields.

https://review.typo3.org/#/c/30632/ adds an error prevention for records which have FlexForm fields that contain references that were not correctly processed (due to the bug above). Install this patch only if you are being faced with an Exception when attempting to edit affected records.

Currently known bugs in moving:

687474703a2f2f692e696d6775722e636f6d2f6d697659336d632e706e67

Currently known bugs in drag and drop:

Idleworks commented 10 years ago

Hi, I don't know if this is a bug or a missing feature. I already mentioned in #558 (see last two posts).

At the moment localizing an element with its child elements works only once. After that there is no way to localize new child elements. I think this i an important feature for multilanguage sites!

NamelessCoder commented 10 years ago

@glucka That one sounds like a traditional "missing dependency injection because of missing injection method in class reflection cache" and if that's the case, it is solved by clearing the (system) cache.

NamelessCoder commented 10 years ago

@glucka You should be on the workbench/commands branch when testing this - we have still not merged the changes to the development branch.

danilobuerger commented 10 years ago

What changes?

glucka commented 10 years ago

@NamelessCoder sorry, i had an older development branch version. (git config problem) The translate works fine now.

Inkdpixels commented 10 years ago

Env & Steps to reproduce this bug Env: TYPO3 6.2, flux development(d18957cb)

  1. Create an Element with the viewhelper <flux:field.inline.fal /> which has the option multiple=TRUE.
  2. Add multiple FAL relations/images to the Element.
  3. Copy the Element/Page of the Element.

Expected result A plain copy of the original record should be in place with all of the original FAL records.

What happens instead? The element is copied, but doesn't have any of it's original FAL records.

Inkdpixels commented 10 years ago

Env & Steps to reproduce this bug Env: TYPO3 6.2, flux development(d18957cb)

  1. Create an Element with an content area (flux:form.content)
  2. Insert this Element into your page record
  3. Insert another fluidcontent element/TYPO3 standard element into the content area of your element which you've created in step 2
  4. Add the content record from the third step into your TYPO3 copy clipboard
  5. Paste the record.

Expected result A copy of the original created element should be added to your chosen destination

What happens instead? The copy gets pasted into the list record of the page, but the element itself isn't visible in the page module.

NamelessCoder commented 10 years ago

Update for https://github.com/FluidTYPO3/flux/issues/573#issuecomment-44843860

The issue appears to be related to the core's copying of any record type: when copying a record which has a TCA-based relation to sys_file via sys_file_reference the record data is correctly copied. But when the relation is stored with a field name that is inside a flexform XML (the sys_file_reference will for example point to a field name called mySpecialImageFiles rather than for example images in the tt_content table).

It appears that the proper copying of references to files, is somehow triggered by or depends on the TCA configuration for the field, which means copying of FAL resources by flexform field name currently fails.

This is a core bug but I will continue to investigate it and possibly create a fix.

Side note: the copied record's XML data value for the field that was incorrectly copied will be the original records reference count. When copying the record, this value is for some reason because the COUNT() of references is zero, recognised as _an UID value of a sys_file record_ which is then attempted referenced. The resulting state of the record can therefore sometimes be that one file reference exists, but is pointing to an unexpected file because the old reference count is being used as if it were a single UID.

NamelessCoder commented 10 years ago

Update for https://github.com/FluidTYPO3/flux/issues/573#issuecomment-44843860

https://review.typo3.org/#/c/30632/ is created to solve the first part of this problem.

NamelessCoder commented 10 years ago

Update for https://github.com/FluidTYPO3/flux/issues/573#issuecomment-44843860

https://review.typo3.org/#/c/30633/ is created to solve the second part of this problem.

johanneslumpe commented 10 years ago

Copy/pasting an element from an FCE to the main column fails. It will copy the element, but not show it in the row. The same goes for pasting as a reference.

Cutting and pasting an element from an FCE to the main column does not do anything at all.

NamelessCoder commented 10 years ago

Cutting and pasting an element from an FCE to the main column does not do anything at all.

Fixed by https://github.com/FluidTYPO3/flux/commit/e91f9199531e71a42e0aab8dc700c6485d3d13c6

arnekolja commented 10 years ago

I had the problem that I could not place plugins in grid columns. Today I stumbled across #565 and then tried the current development branch - it solved my problem. I was able to drag and drop a tx_news plugin CE into a grid column.

Just a little success message for your pleasure :)

patrickleonhardt commented 10 years ago

Hi, I use the new fluidbootstraptheme and the new dev versions of flux and co. I am able to create for example a powermail plugin outside a row and drag it into it. But it's not possible to create a plugin directly inside the row.

twirsing commented 10 years ago

Hi, I can't get rid of "Copy default content elements" of CE "Column Row" (with child CE) does not show translated child CE" - Problem. When using flux 7.1 staging, fluidcontent 4.1 dev and fluidpages 3.1 dev I reveice an error "Fatal error: Call to a member function preparedGet() on a non-object in /var/www/ext_versions/fluidcontent_versions/fluidcontent_4_1_dev/Classes/Service/ConfigurationService.php on line 266". Apparently the recordService never gets injected.

bjo3rnf commented 10 years ago

Hi @twirsing,

the mentioned service is only available in the dev branch of flux.

Cheers Björn

twirsing commented 10 years ago

Thanks Björn for the instant reply. When using the dev branch I get another error. Fatal error: Call to a member function get() on a non-object in /var/www/ext_versions/flux_versions/flux_7_1_dev/Classes/Configuration/BackendConfigurationManager.php on line 176

twirsing commented 10 years ago

problem solved. Properly emptying the caches 'Important Actions/Clear all cache' in Install Tool and it works, Thanx for the directions to @bjo3rnf

ervaude commented 10 years ago

I dont know if this is suposed to be supported but hoping it is, I'll describe a Issue with localization:

Given you have a FluidcontentElement - lets say a multicolumn with two columns A and B. You set this FluidcontentElement to sys_language_uid=-1 (all). You add a ContentElement (CE) in column A with sys_language_uid=-1 so it is displayed in all langugaes. You add a CE to column B with sys_language_uid=0 and want to translate ist in other languages. Issue1: This is only possible within the list module. You translate the CE in the list module. Issue2: If you switch languages in page module the CE in column B is always displayd in default langugae.

In the frontend everything works fine as expected. The issues are solely in the backend.

I'm not sure to wich extend flux supports sys_languga_uid=-1. But I think this is a valid usecase.

Best regards. Daniel

fgerards commented 10 years ago

are there any updates on the flux:field.inline.fal problem ? Until core-bug is fixed, that means FLUX is unusable with fal-resources in localized FCEs ?

NamelessCoder commented 10 years ago

are there any updates on the flux:field.inline.fal problem

Solved in TYPO3 CMS core master branch when using Flux development branch.

danilobuerger commented 10 years ago

by which commit?

NamelessCoder commented 10 years ago

TYPO3/TYPO3.CMS/524ead974a05ac343b2792237feccd3e82aab2dd, TYPO3/TYPO3.CMS/4436848eddfd2d18bacfa372ec705da19c769ce4.

mithri commented 10 years ago

I tried the new Row element from the bootstrap package. I can`t copy the Row element to another page, all inner relations are lost. With my own Row element it didnt work, too.

Second problem: On the initial translation of Row or Grid Elements with children the translations works fine. If i add then antoher child in the default language i cant get this element translated with any relation. It just get translated but it lost all relations. I used the dev branches from today for flux, vhs and fluidcontent. TYPO3 6.1.10

Third: Can we use row elements with language all (see some posts above)?

thanks for your good work.

camuco commented 10 years ago

After upgrading from flux 7.0 to 7.1 on TYPO3 6.1.10 all content within my flexform grids was lost. Will there be an update tool or something like that?

NamelessCoder commented 10 years ago

@camuco see https://github.com/FluidTYPO3/fluidcontent/issues/178 - official information will be released along with new TER version. There will be no upgrade script since migrating this requires a conscious decision in each template, whether or not the repurposed flux:form.content will be appropriate.

camuco commented 10 years ago

@NamelessCoder Thank you very much. Any thoughts about a release date?

NamelessCoder commented 10 years ago

Cannot give an estimated release date. Completion depends on this issue: https://github.com/FluidTYPO3/flux/issues/627 and the remaining bugs noted in this current issue here.

camuco commented 10 years ago

Ok, thanks again for the great work!

cdfre commented 10 years ago

I currently see the following major bugs with FCE translations:

Do you need help fixing these issues?

And @NamelessCoder could you please update the first post of this issue? The bugs in the comments are not noted there, so it seems all bugs have been fixed.

fgerards commented 10 years ago

I dont see this issue (https://github.com/FluidTYPO3/flux/issues/615) discussed in this thread as suggested. Are the txflux... values taken into account when you copy a child FCE INSIDE another FCE and paste it into the same column of that FCE?

Copying a child FCE and pasting it i.e. into another flux_column inside the same parent FCE fails. this is due to some logical errors in Classes/Providers/ContentProvider->pasteAfter() I guess, when pasting a copyied record AFTER another one, you have to look into the RELATIVE RECORDs tx_flux_parent column and tx_flux_column fields to determine the context you are pasting into.

I'm was looking into FLUX development branch, but the pasteAfter method is broken there imho.

Feedback welcome.

mnlgrn commented 10 years ago

I can't copy/paste (in the view PAGE I've no new element, but when I use view LIST I see it) FCE element from column to another like descripted in #573 and I've tried to resolve as suggested but it doesn't work. I'm using T3 6.2.3 ... Into db the two columns, tx_flux_parent and tx_flux_column, are empty, if i correctly populate them the element appears in the correct place

NamelessCoder commented 10 years ago

@cdfre

Moving (Drag & Drop) an element from within an FCE to the outside (normal column), (sometimes?) does not sets the colPos for all localized elements and moving an element from the outside to the inside of an FCE also only sets the default-language-contentelements colPos to fluid content area and the localized elements remain on the colPos they had before.

This could potentially be a bug in the cascading TCA... since now, the core handles all these operations, I would expect the core to "kick in" when it detects that localised versions of the record exists - and use the 100% core-generated command arguments given in POST to also update localised records.

However, it needs to be re-tested at this point before I go ahead and add it to the list. I'd hate to add already solved issues. Would you mind trying this?

Translating an FCE with childs also translates all childs. I don't expect this, cause i have content fallback and don't automaticaly want to translate all embeded contentelements. If one child contentelement is already translated an error is displayed

This is governed by the TCA setting localizeChildrenAtParentLocalization of tx_flux_children. You can of course override this setting (simply change the TCA any way you like) but the default behaviour should be to localise child records as TCA normally would do it. Perhaps it would be easier to control localisation if the container element's language is set to ALL when the container is purely for structure and only localise the container/parent if it actually contains text itself - in which case I would expect child records to be localise automatically. I suppose it could be argued both ways but regardless, we have to settle on a default - and then inform how to change it like described above.

If there is a setting to auto-skip already translated children without an error message then I am not aware of it, but would not mind implementing it. More info/investigation would be appreciated.

Translating an contentelement within an FCE is causing the newly localized element to have no relation to the fce. [..]

Once again it seems these values are copied by the core. If there's a way to exclude those fields, I would not mind implementing it. However, frontend output would have to be fixed after that since the query to select records is based on these values.

But I don't consider this a bug that we should fix with code. It would apply to any type of nested record structure with TCA similar to Flux's.

Moving (Drag & Drop) an element from inside an FCE to the outside sets the language of the moved element to that of the previously parent FCE [..]

This could be a core issue with the command that's dispatched when you drop a record. Either in the parameters it contains, or in how they are treated by the DataHandler. If it is the parameters we might be able to fix it, it is not already fixed by the additional initialisation of the record listing implementation I did in flux:content.get and .render recently. It could also be the core trying to be clever in preserving the language of a parent depending on the child record's current values.

@fgerards

Copying a child FCE and pasting it i.e. into another flux_column inside the same parent FCE fails.

Fixed a while ago.

@mnlgrn

I can't copy/paste (in the view PAGE I've no new element, but when I use view LIST I see it)

This should also be fixed a while ago, but may require either fixing or recreating the current parent element in order to make newly created children correctly detect the relationship attributes.

markhowellsmead commented 10 years ago

When adding an FCE to a flux:grid element column, the element receives a negative PID number.

According to (inexperienced) editor report, this happens when he carries out the following process.

• Copied an element from column 1 inside a flux:grid to column 2 inside the same flux:grid • This initially pasted the element back into column 1 and this new element could then not be deleted. It could, however, be moved to column 2 via drag and drop and was displayed on the FE when activated.

I cannot replicate this in OSX/Chrome.

• TYPO3 6.1.10 • Fluid 6.1.0 • Fluidcontent 4.0.0 • Flux 7.0.0 • VHS 1.8.5 • Waiting for feedback on a browser and version number.

markhowellsmead commented 10 years ago

The editor reports that Firefox Portable is in use. This could well be an issue, as it's proven to be flaky even for CSS layouts, let alone for the complexity of the TYPO3 backend.

glucka commented 9 years ago

The localised (copied) elements have always the original colPos. Copy a content element (which have localised versions) from Column (colPos = 0) Paste into Column with colPos 1 After paste the copied localised content elements have always colPos = 0

I think the db fields (colPos, tx_flux_column, tx_flux_parent, tx_flux_children ) of a localised element should be also updated on copy or drag & drop the original element.

twirsing commented 9 years ago

I am not sure how this is addressed above in "Translating an contentelement within an FCE is causing the newly localized element to have no relation to the fce. [..]" but at least the behavior I experience is inconsistent. Only when I use the "Synchronize with original language" feature in the parent content element within the second language a new child element of the original language is correctly created. But when I try to create an translation of an "child"-element from the original language using the top dropdown of the content element, the tx_flux_parent is not correctly set. All the other fields are handled correctly. So the new translation appears in the wrong language. I am using Typo3 6.2.9 and all the current versions of flux, fluidcontent, fluidpages and vhs. Both master and development branches show the same behavior.

f000 commented 9 years ago

I'm using current master of flux, fluidpages and fluidcontent on TYPO3 6.2.9 w/o css_styled_content.

My Content FCEs are nested in Row FCEs and Rows are nested in Section FCEs. For grids I'm using cols without colPos parametr <flux:grid.column name="unique for every column and element" />.

Bug 1: If I set grid FCE to Language: [All] and try to localize children using List module, in FE on localized page children gets displayed twice.

Bug 2: Switch to Page module "Languages" view introduces additional area called "Fluid Content Area" with badly messed content. All elements are in wrong order and elements from 3rd level of nesting are displayed twice (separately + in 2nd level elements). At least, is it possible to hide this area?

Bug 3: If I click "Copy default elements" in Page module "Languages" view "Fluid Content Area" I'm getting newlog()] Localization failed; Source record had another language than "Default" or "All" defined! and 2nd+3rd level nested FCEs gets physically duplicated in default language. (click in the "columns" area works)

fgerards commented 9 years ago

We use FLux TER 7.1.2 and TYPO3 6.2.9 official core. When copying FCEs with flux:field.inline.fal - relations, the count() value in the Flexform in the DB is replaced by a comma-separated list of the uid's of the pic-relations. Isn't this core/TCE-Bug already solved in 6.2.9 master ? @NamelessCoder : Do you have any uptodate-status of this issue in the 6.2.9 core ?

NamelessCoder commented 9 years ago

@fgerards No, sorry - I don't know if that FAL-copy-reference issue is fixed in 6.2.9. If it isn't, you should definitely push for it today, since the code sprint is still in effect.

outdoorsman commented 9 years ago

Drag/drop as well as cut/paste are not working for me... the content element disappears. This happens when I create a four column row in fluidbootstraptheme and then drag pre-exisiting content into one of the four columns I just create (nested content).

Also if I try to move content from column to column within the fluidbootstraptheme four column content element, it will either work, ignore my action completely, or reorder where it's at in that column. Some content element types seemed drag/drop better in this scenario than others... strange.

I'm using:

outdoorsman commented 9 years ago

I just upgraded from TYPO3 6.2.10 to TYPO3 CMS 7.1.0 thinking that would help but neither nested drag/drop or cut/paste work in either version of TYPO3 CMS.

outdoorsman commented 9 years ago

Ahhhhhhhhhh... this bug is really causing a lot of work when I have to recreate so many FEC's just to move them to a different column! I'm in the middle of upgrading many websites to be responsive FT3 sites and I'm having to recreate like a 1/4 of all content since I can't drag/drop and this is on content-heavy websites.

outdoorsman commented 9 years ago

Maybe I've just hijacked this issue but it seems that it's grown beyond the original issue already. Here's a specific example:

I'm experiencing issues with drag/drop of content between columns of the four column-wide grid FCE from fluidbootstraptheme. Some things work, some don't. Yesterday I was noticing that the Text and fluidbootstraptheme's Simple Responsive Image content elements behaved differently when trying to drag/drop.

CarstenD commented 9 years ago

I'am currently having the same issue than @Outdoorsman

CarstenD commented 9 years ago

Bugfix: https://github.com/FluidTYPO3/flux/pull/798

franzkugelmann commented 9 years ago

i experience the same problem as twirsing commented on 24 Jan: Translating an element within a fce (default language) does place the translated element still within the fce in default language instead of within the translated version of the fce.

Gridelements had the same issue, i currently use the same logic to update tx_flux_parent to the id of the localized container within an processDatamapClass hook, seems to work well: https://forge.typo3.org/issues/50800 https://review.typo3.org/#/c/30509/1/Classes/DataHandler/PreProcessFieldArray.php

DenisMir commented 9 years ago

I am experiencing copy & paste as well as drag & drop errors with the following setup: flux@7.2.0, fluidpages@3.2.0, fluidcontent@4.2.1, vhs@2.3.2, typo3@6.2.12

Bug 1 (copy & paste):

      <flux:grid>
        <flux:grid.row>
          <flux:grid.column name="content.colOne" />
          <flux:grid.column name="content.colTwo" />
        </flux:grid.row>
      </flux:grid>

In this test setup no other languages are setup. So translation stuff should not influence this behavior.

Bug 2 (drag & drop):

      <flux:grid>
        <flux:grid.row>
          <flux:grid.column name="content.colOne" />
          <flux:grid.column name="content.colTwo" />
        </flux:grid.row>
      </flux:grid>

Bug 3 (drag & drop):

Bug 4 (drag & drop):

To be honest these bugs make using drag & drop and copy & paste unusable since you can't be sure that tx_flux_column and tx_flux_parent get updated correctly.

Update

After some retesting with the developement branch of flux I can confirm that bugs 2-4 which included drag&drop are fixed. The copy & paste bug does still appear.

Update 2

After even more testing with the developement branch I can summarize:

Action Result
Copy & Paste inside <flux:form.content (...) /> or <flux:grid.column (...) />  colPos gets updated correctly to 18181, tx_flux_column and tx_flux_parent always get updated to empty or 0 value -> The pasted element disappears in the page view (backend layout) due to the mix of a correct colPos but incorrect tx_flux_... fields
Cut & Paste inside <flux:form.content (...) /> or <flux:grid.column (...) />  colPosgets updated correctly to 18181, tx_flux_column and tx_flux_parent always get updated to empty or 0 value -> The pasted element disappears in the page view (backend layout) due to the mix of a correct colPos but incorrect tx_flux_... fields
Copy & Reference inside <flux:form.content (...) /> or <flux:grid.column (...) /> colPos gets updated to incorrect 0 value, tx_flux_column and tx_flux_parent always get updated to empty or 0 value -> The referenced element appears in the main column due to colPos = 0

It is interesting to see that these bugs do not appear on the following a bit older setup: flux@7.1.2, vhs@2.2.0, fluidpages@3.1.2, fluidcontent@4.1.1, typo3@6.2.9. Pasting/Referencing of copied/cut elements to fluid content areas does work flawlessly.

BenjaminBeck commented 9 years ago

Hi @DenisMir, thanks for this list! The fix for the last one of the bugs you encountered (1) has just been merged to development. That commit should also fix your issues in the table from "Update 2".

DenisMir commented 9 years ago

@BenjaminBeck Great. I will update my developement branch and test out the fix.