Last modified: 2014-10-09 21:23:15 UTC
(This bug notes issues with both Parsoid and VisualEditor. I think all of this is caused by the terrible mistake that is bug 529 / bug 12974. I'll leave it for you to figure out this mess. :) ) ---- On mediawiki.org, there is a family on fancy templates like [[mw:Template:MW 1.23]] that generate a right-floated MediaWiki version number in a frame. These templates generate a wikitext table (starting with '{|'), which means that due to bug 529 / bug 12974 a newline is prepended before it. This behavior is incredibly annoying in practice, but it seems that we're very much wedded to it because it made Parsoid people's lives easier. ---- However, Parsoid rendering of this particular template is inconsistent with PHP. On [[mw:Manual:Skinning#Localisation_messages]], PHP generates an empty paragraph before the table, while Parsoid doesn't and produces an about-grouped pair of <span>\n</span><table>…</table> (the span tag only contains the prepended newline). This rendering, that looks good in Parsoid/VisualEditor, therefore looks like crap in PHP parser. Note that the <span> is not nested in a <p> or any other block-level element, it just sits there right in the <body>. (It is not visible since, as I mentioned, it just contains some whitespace.) ---- More problems appear when you try to edit text with this template in VisualEditor. For example, testing on [[mw:Manual:Skinning#Localisation_messages]]: * Place cursor before/after one of the templates. * Press 'Right'/'Left' keyboard key twice. ** First press selects the template, as expected. ** Second press scrolls the page all the way up. * Try inserting the "MW 1.23" template on an empty line. ** Observe that the blue highlights are different than for the templates already present on the page – there is both the table, as well as a single "space" (?) in text flow. Observe that the context menu is placed weirdly in the middle of the page. ** Place cursor after the "space" and try typing. Weird things happen, sometimes I get an exception "Uncaught Error: Unbalanced set of replace operations found", sometimes my input is duplicated or I get snowmen and pawns. ** Try deleting the template in any way. It is deleted, but the page is scrolled all the way up. * Edit the two paragraphs right after the "Localisation messages" heading (add a letter somewhere in the middle or something). * Try saving the page. ** Observe that multiple newline-related changes appear to have been made. Strangely, there are actually no changes, but the *before* half of the comparison has some newlines removed.
This is causing breakage in edits (that is not being detected by VE): https://www.mediawiki.org/w/index.php?title=Manual:Skinning&diff=1074312&oldid=1072136
(In reply to Bartosz Dziewoński from comment #0) > * Place cursor before/after one of the templates. > * Press 'Right'/'Left' keyboard key twice. > ** First press selects the template, as expected. > ** Second press scrolls the page all the way up. So if you select a node that's floating right and is half way down the page, then press left or right, you scroll all the way to the top of the page (though the cursor is positioned correctly). > ** Place cursor after the "space" and try typing. Weird things happen, > sometimes I get an exception "Uncaught Error: Unbalanced set of > replace operations found", sometimes my input is duplicated or I > get snowmen and pawns. Yeah, I get that error and other weirdness (e.g. the cursor moving around - to before/after the template I think?) when typing normally, then snowmen+pawns when I try to undo/redo things. I've also been getting some extra errors: Uncaught Error: Unbalanced input passed to document At one point I got this error as well: Uncaught Error: Offset could not be translated to a DOM element and offset: 77
The pawn, snowman and offset exception bugs should be fixed by https://gerrit.wikimedia.org/r/149920 . The scrolling all the way up is bug 68589. The rendering weirdness due to the span-wrapped newline is probably unique to this bug.
Let's turn this into a mini tracking bug, then? I split off the Parsoid issue to bug 68862, together with VE bug 68733, bug 68708 and bug 58038 this seems to describe all of the problems.
All VE items appear fixed as of a while ago. Marking as such.