Go to file
Bartosz Dziewoński 890588f36a Pick reply insertion point based on parser tree, not DOM tree
I don't like that I had to special-case `<p>` tags (top-level
comments) in this code. I feel like it should be possible to handle
top-level comments and replies in a generic way, but I couldn't find
a way to do it that actually worked.

Notes about changes to the behavior, based on the test cases:

* Given a top-level comment A, if there was a "list gap" in the
  replies to it: previously new replies would be incorrectly added at
  the location of the gap; now they are added after the last reply.
  (T242822)

  Example: "pl", comment at "08:23, 29 wrz 2018 (CEST)"

* Given a top-level comment A and a reply to it B that skips an
  indentation level: previously new replies to A would be added with
  the same indentation level as B; now they are added with the
  indentation level of A plus one. (The old behavior wasn't a bug, and
  this is an accidental effect of other changes, but it seems okay.)

  Example: "pl", comment at "03:22, 30 wrz 2018 (CEST)"
    and reply at "09:43, 30 wrz 2018 (CEST)"

* Given a top-level comment A, a reply to it B, and a following
  top-level comment C that starts at the same indentation level as B:
  previously new replies to A would be incorrectly added in the middle
  of the comment C, due to the DOM list structure; now they are added
  before C. (T241391)

  (It seems that comment C was supposed to be a multi-line reply that
  was wrongly indented. Unfortunately we have no way to distinguish
  this case from a top-level multi-line comment that just happens to
  start with a bullet list.)

  Example: "pl", comments at "03:36, 24 paź 2018 (CEST)",
    "08:35, 24 paź 2018 (CEST)", "17:14, 24 paź 2018 (CEST)"

* In the "en" example, there are some other changes where funnily
  nested tags result in slightly different results with the new code.
  They don't look important.

* In rare cases, we must split an existing list to add a reply in the
  right place. (Basically add `</ul>` before the reply and `<ul>`
  after, but it's a bit awkward in DOM terms.)

  Example: split-list.html, comment "aaa"; also split-list2.html
    (which is the result of saving the previous reply), comment "aaa"

* The modifier can no longer generate DOM that is invalid HTML, fixing
  a FIXME in modifier.test.js (or at least, it doesn't happen in these
  test cases any more).

Bug: T241391
Bug: T242822
Change-Id: I2a70db01e9a8916c5636bc59ea8490166966d5ec
2020-01-23 21:13:12 +01:00
i18n Localisation updates from https://translatewiki.net. 2020-01-21 08:16:04 +01:00
includes build: Add missing .phpcs.xml and make pass 2020-01-13 20:48:11 +01:00
maintenance Call Maintenance::requireExtension 2020-01-13 22:15:43 +01:00
modules Pick reply insertion point based on parser tree, not DOM tree 2020-01-23 21:13:12 +01:00
tests Pick reply insertion point based on parser tree, not DOM tree 2020-01-23 21:13:12 +01:00
.eslintrc.json build: Updating npm dependencies 2020-01-09 06:43:15 +00:00
.gitignore Add .gitignore file 2019-10-10 21:21:00 +01:00
.gitreview Add .gitreview 2019-10-09 21:18:34 +00:00
.phpcs.xml build: Add missing .phpcs.xml and make pass 2020-01-13 20:48:11 +01:00
.stylelintrc.json build: Updating mediawiki/mediawiki-codesniffer to 29.0.0 2020-01-14 04:55:38 +00:00
CODE_OF_CONDUCT.md build: Updating npm dependencies 2020-01-09 06:43:15 +00:00
composer.json build: Add phan-taint-check-plugin version 2020-01-17 18:13:25 +01:00
COPYING Add required files for an extension 2019-10-10 19:42:56 +01:00
extension.json Pick reply insertion point based on parser tree, not DOM tree 2020-01-23 21:13:12 +01:00
Gruntfile.js build: Updating npm dependencies 2020-01-09 06:43:15 +00:00
package-lock.json build: Updating npm dependencies 2020-01-09 06:43:15 +00:00
package.json build: Updating npm dependencies 2020-01-09 06:43:15 +00:00