Page MenuHomePhabricator

Ensure subreferences displayed in VE are visually consistent with read mode
Open, Needs TriagePublic

Description

Make VE render sub-references the same as they are rendered on the wiki page in the <references> section.

VE requirement (Epic: T245299: Sub-reference support in VE): An article's sub-references should appear to you, someone in editing in VE, the same way they appear to you when you are viewing that article's sub-references in read mode.

User story:
As an editor editing an article in VE
I want the reference number for subreferences I see when I am editing to be the same as the number I see when reading the article, both for the footnote marker in the text and for the footnote body in the references section
So that I can correctly identify and edit main- and sub-references using VE

Implementation:

  • Group and indent refs by "extends" relationship.
  • Reflist should have “5.2” numbering. Show footnote body indented and sub-numbered.
  • Article footnote markers should have "[5.2]" numbering.
  • Copy-and-paste behavior should be unchanged for the footnote markers and the footnote bodies.
  • Reader mode should be unchanged, including "Parsoid" read mode.
    • Including "Parsoid" read mode. Note that fixing T369614 would make the Parsoid approach transparently consistent with the new approach in this task.~~
  • [x] Try to avoid making unused list-defined refs visible, or discuss why this is desirable.
  • Nothing too terrible happens with template-produced refs. These numbers are already nonsense and don't correspond to the reflist, so some damage is okay as long as the ref still looks reasonable.
  • Parent and subref should both be editable on click.

Previous work
See https://gerrit.wikimedia.org/r/#/c/mediawiki/extensions/Cite/+/566729/

Out of scope:

  • Don't solve any other numbering issues in VE, for example with template-produced refs.
  • Don't worry about clicking into the subref in the reflist
  • Don't worry about subref reuse numbering

Deployment:

  • We will implement this for beta for now.

Details

SubjectRepoBranchLines +/-
mediawiki/extensions/Citemaster+30 -23
mediawiki/extensions/Citemaster+6 -1
mediawiki/extensions/VisualEditormaster+1 -3
mediawiki/extensions/Citemaster+224 -163
mediawiki/extensions/Citemaster+1 -1
mediawiki/extensions/Citemaster+175 -0
mediawiki/extensions/Citemaster+10 -0
mediawiki/extensions/Citemaster+58 -0
mediawiki/extensions/Citemaster+78 -31
mediawiki/extensions/Citemaster+15 -4
mediawiki/extensions/Citemaster+29 -10
mediawiki/extensions/Citemaster+84 -10
mediawiki/extensions/VisualEditormaster+2 -0
mediawiki/extensions/Citemaster+1 -91
mediawiki/extensions/Citemaster+74 -68
mediawiki/extensions/Citemaster+46 -12
mediawiki/extensions/Citemaster+3 -4
mediawiki/extensions/Citemaster+8 -1
mediawiki/extensions/Citemaster+19 -2
Show related patches Customize query in gerrit

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes

This task turns out to be a great excuse to also work on a refactor such as T363095: [Refactor] New class to encapsulate Cite ref operations in VE. The reference list is currently reliant on InternalList indexOrder, which gets completely scrambled by subreferencing. For now, I'll write the necessary logic inside of the reference list class.

awight subscribed.

Change #1046719 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] [WIP] Adding subreferencing layout to the VE references list

https://gerrit.wikimedia.org/r/1046719

awight updated the task description. (Show Details)
awight updated the task description. (Show Details)

Change #1047067 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] [refactor] Move "extends" grouping to MWDocumentReferences

https://gerrit.wikimedia.org/r/1047067

Change #1047068 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] [refactor] Use cached this.internalList

https://gerrit.wikimedia.org/r/1047068

Change #1047069 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] [WIP] Explicitly set reflist numbering

https://gerrit.wikimedia.org/r/1047069

Change #1047084 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] [WIP] Experiment with hierarchical footnote numbering

https://gerrit.wikimedia.org/r/1047084

Change #1047471 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] [refactor] Split out reflist item rendering

https://gerrit.wikimedia.org/r/1047471

Change #1047475 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] Click on ref body, not li

https://gerrit.wikimedia.org/r/1047475

Change #1047067 abandoned by Awight:

[mediawiki/extensions/Cite@master] [refactor] Move "extends" grouping to MWDocumentReferences

Reason:

Squashed into Ia82658af72caebd29241b9bd329d236ddc3f1e6d

https://gerrit.wikimedia.org/r/1047067

Change #1047069 abandoned by Awight:

[mediawiki/extensions/Cite@master] [WIP] Explicitly set reflist numbering

Reason:

Wrong turn.

https://gerrit.wikimedia.org/r/1047069

Change #1047084 abandoned by Awight:

[mediawiki/extensions/Cite@master] [WIP] Experiment with hierarchical footnote numbering

Reason:

Also the wrong direction.

https://gerrit.wikimedia.org/r/1047084

Change #1047506 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] [WIP] Experimenting with non-counter footnote numbering

https://gerrit.wikimedia.org/r/1047506

Change #1047507 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] [WIP] Crudely wiring subref counting into the nubmering renderer

https://gerrit.wikimedia.org/r/1047507

Change #1047471 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] [refactor] Split out reflist item rendering

https://gerrit.wikimedia.org/r/1047471

Change #1047506 abandoned by Awight:

[mediawiki/extensions/Cite@master] [WIP] Experimenting with non-counter footnote numbering

Reason:

squashed

https://gerrit.wikimedia.org/r/1047506

awight updated the task description. (Show Details)

Change #1050578 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] [refactor] switch reflist rendering source of truth

https://gerrit.wikimedia.org/r/1050578

Change #1051295 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] Promote orphaned subrefs to the top level

https://gerrit.wikimedia.org/r/1051295

Change #1051318 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/VisualEditor@master] Temporarily skip a Cite-related test

https://gerrit.wikimedia.org/r/1051318

Change #1051319 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/VisualEditor@master] Reenable test after Cite-related fix

https://gerrit.wikimedia.org/r/1051319

Change #1051318 merged by jenkins-bot:

[mediawiki/extensions/VisualEditor@master] Temporarily skip a Cite-related test

https://gerrit.wikimedia.org/r/1051318

Change #1050578 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] [refactor] switch reflist rendering source of truth

https://gerrit.wikimedia.org/r/1050578

We've found that the reader rendering already dispenses with CSS counter reset for footnote markers, and instead renders the numbers from PHP using messageLocalizer->localizeDigits , drawing from CLDR data. We should switch to a similar approach for edit mode, which should make numbering work better in more languages, but will rely on CLDR numbering in JS. Happily, support was already implemented in https://github.com/wikimedia/banana-i18n/issues/55 so we'll try wiring into those functions.

awight moved this task from Doing to Tech Review on the WMDE-TechWish-Sprint-2024-06-26 board.

Change #1051295 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Promote orphaned subrefs to the top level

https://gerrit.wikimedia.org/r/1051295

Further obstacles:

  • Ordered lists come with browser-default styles that aren't always "#.", for example language mni uses "#)". This suffix doesn't seem to be available in CLDR or anywhere else.
  • Template-produced refs are rendered through Parsoid, which will pick a different numbering order than VE as we know—but also assumes that numbering is done via a single counter-reset. If we switch the VE refs to render as explicit strings, then Parsoid refs appear as Arabic numerals regardless of content language. Will need to distinguish between the two. Perhaps template-produced refs should be rendered as a placeholder "[…]" anyway?

Change #1047507 abandoned by Awight:

[mediawiki/extensions/Cite@master] Wire subref counting into the numbering renderer

Reason:

Patch has been split, following a different approach

https://gerrit.wikimedia.org/r/1047507

Change #1052707 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] MWDocumentReferences can provide footnote index numbers

https://gerrit.wikimedia.org/r/1052707

Change #1052708 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] Wire subref numbers into footnote markers

https://gerrit.wikimedia.org/r/1052708

Change #1052709 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] Wire subref numbering into reflist

https://gerrit.wikimedia.org/r/1052709

Change #1047507 restored by Awight:

[mediawiki/extensions/Cite@master] Wire subref counting into the numbering renderer

https://gerrit.wikimedia.org/r/1047507

Change #1052709 abandoned by Awight:

[mediawiki/extensions/Cite@master] Wire subref numbering into reflist

Reason:

https://gerrit.wikimedia.org/r/1052709

Change #1052708 abandoned by Awight:

[mediawiki/extensions/Cite@master] [WIP] Wire subref numbers into footnote markers

Reason:

Total disaster.

https://gerrit.wikimedia.org/r/1052708

Change #1052707 abandoned by Awight:

[mediawiki/extensions/Cite@master] MWDocumentReferences can provide footnote index numbers

Reason:

Not needed, this was for the alternative approach.

https://gerrit.wikimedia.org/r/1052707

Change #1053262 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] [WIP] Demonstrate how to restore the previous rendering of templated refs

https://gerrit.wikimedia.org/r/1053262

Change #1053264 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] [WIP] Demonstrate "[…]" content for template-produced refs

https://gerrit.wikimedia.org/r/1053264

Change #1053262 abandoned by Awight:

[mediawiki/extensions/Cite@master] Restore the previous rendering of templated refs

Reason:

squashed

https://gerrit.wikimedia.org/r/1053262

Change #1053892 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] Fix: safely handle refs which have no "firstNode"

https://gerrit.wikimedia.org/r/1053892

Change #1053892 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Fix: safely handle refs which have no "firstNode"

https://gerrit.wikimedia.org/r/1053892

Change #1053950 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] Ignore placeholders when getting refs from document

https://gerrit.wikimedia.org/r/1053950

Change #1053950 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Ignore placeholders when getting refs from document

https://gerrit.wikimedia.org/r/1053950

Change #1047507 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Wire subref counting into the numbering renderer

https://gerrit.wikimedia.org/r/1047507

Change #1051319 merged by jenkins-bot:

[mediawiki/extensions/VisualEditor@master] Reenable test after Cite-related fix

https://gerrit.wikimedia.org/r/1051319

Change #1055245 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] [WIP] Fix backlink numbering for subrefs in VE

https://gerrit.wikimedia.org/r/1055245

Hello everyone, I think one of the patches caused this bug T370585.