Uploaded image for project: 'eZ Publish / Platform'
  1. eZ Publish / Platform
  2. EZP-21903

Copy & paste with chrome insert non break space

    Details

      Description

      I'm unsure if this should be regarded as a bug on eZOE, or if we could implement an enhancement to account for a bug in Chrome and / or tinyMCE stack.

      steps to reproduce
      • Using chrome, in an eZ Publish 5.1 admin portal, edit or create a new article object
      • In the Body field enter some text, select it, copy to clipboard, go to end of line, enter a space, paste, enter another space, paste again, publish
      • View the article (either in front end or back end), inspect the text element.
        . You'll verify that the spaces between the pasted text have been replaced by non breakable spaces "& nbsp ;"

      This could only be reproduced with chrome and seems to be related to this tinyMCE bug report.

      The ill effect of this behavior is that editors won't notice that the XML saved has the special characters until some layout in the front end breaks, due to the non breakable spacing used.

      I've compared the contents stored in MySQL ezcontentobject_attribute using chrome and firefox.
      At a first glance, data_text seems the same.
      But, if you select a different codepage (set names cp1250, for instance) instead of the default and expected utf8, you'll verify that chrome is adding some unexpected character to the content, right where the non breaking spaces show up

        Issue Links

          Activity

          Hide
          Pedro Resende (Inactive) added a comment - - edited

          This issue is present on the latest of TinyMCE, you can easily reproduce it http://www.tinymce.com/.
          One possible walkthrough is described here http://blog.room34.com/archives/5075

          Show
          Pedro Resende (Inactive) added a comment - - edited This issue is present on the latest of TinyMCE, you can easily reproduce it http://www.tinymce.com/ . One possible walkthrough is described here http://blog.room34.com/archives/5075
          Hide
          Gaetano Giunta (Inactive) added a comment - - edited

          The workaround suggested in http://blog.room34.com/archives/5075 has been implemented, and cursory testing seems successful.
          I'd probably prefer to augment "paste_postprocess" function though rather than add a new function wiping out all NBSPs though

          Show
          Gaetano Giunta (Inactive) added a comment - - edited The workaround suggested in http://blog.room34.com/archives/5075 has been implemented, and cursory testing seems successful. I'd probably prefer to augment "paste_postprocess" function though rather than add a new function wiping out all NBSPs though
          Hide
          Damien Pobel (Inactive) added a comment -

          The workaround is clearly not an acceptable solution as it removes all non break spaces (in all browser). I already tried to implement something in the paste callbacks without luck so far, I'm trying again...

          Show
          Damien Pobel (Inactive) added a comment - The workaround is clearly not an acceptable solution as it removes all non break spaces (in all browser). I already tried to implement something in the paste callbacks without luck so far, I'm trying again...
          Hide
          Damien Pobel (Inactive) added a comment -

          Gaetano: I know I was just mentioning that for others that might come across this bug.

          Joaquim: actually this is a pure frontend side issue because in Chrome, when you hit space at the end of a line, it adds a non break space, if you type something after, TinyMCE transforms it to a normal space but this transformation does not occur when you are pasting something instead of the normal typing. The weird character you are seeing in the database is the UTF8 character for the non break space and it's perfectly normal to have it when the non break space is wanted.

          Yesterday, I've worked on another workaround which is a bit less brutal as it removes only the potentially unwanted non break space when pasting if the user has a webkit browser and if the non break space is the last character of the line. The only problem I see with this patch is that I have no clue if the non break space was added automatically (and it should be removed) or it was added manually by the user and in this case we should keep it.

          Show
          Damien Pobel (Inactive) added a comment - Gaetano: I know I was just mentioning that for others that might come across this bug. Joaquim: actually this is a pure frontend side issue because in Chrome, when you hit space at the end of a line, it adds a non break space, if you type something after, TinyMCE transforms it to a normal space but this transformation does not occur when you are pasting something instead of the normal typing. The weird character you are seeing in the database is the UTF8 character for the non break space and it's perfectly normal to have it when the non break space is wanted. Yesterday, I've worked on another workaround which is a bit less brutal as it removes only the potentially unwanted non break space when pasting if the user has a webkit browser and if the non break space is the last character of the line. The only problem I see with this patch is that I have no clue if the non break space was added automatically (and it should be removed) or it was added manually by the user and in this case we should keep it.
          Hide
          Damien Pobel (Inactive) added a comment -

          PR: https://github.com/ezsystems/ezpublish-legacy/pull/834

          as mentioned in the PR description, this patch is not perfect as with it, OE might remove some user added non breaking space.

          Show
          Damien Pobel (Inactive) added a comment - PR: https://github.com/ezsystems/ezpublish-legacy/pull/834 as mentioned in the PR description, this patch is not perfect as with it, OE might remove some user added non breaking space.
          Show
          Damien Pobel (Inactive) added a comment - Fixed in ezpublish-legacy: master: http://github.com/ezsystems/ezpublish-legacy/commit/65268e2957c7484b7022711397409715548e7f74
          Hide
          Joao Pingo (Inactive) added a comment -

          QA Approved

          Show
          Joao Pingo (Inactive) added a comment - QA Approved

            People

            • Assignee:
              Unassigned
              Reporter:
              Joaquim Cavalleri (Inactive)
            • Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0 minutes
                0m
                Logged:
                Time Spent - 2 days, 2 hours
                2d 2h