Page MenuHomePhabricator

[Refactor] Allow editing main content in the ReferenceDialog of a sub-ref node without relying on a main node
Open, Needs TriagePublic

Description

Context

We want to move away from synthetic LDRs. So instead on depending on (main) ve.dm.MWReferenceNode to be part of the document we want to retrieve content and ve.dm.InternalItemNode directly from the InternalList.

The ve.dm.MWReferenceModel is already an abstraction which hides the MWReferenceNode and is used to edit the nodes in the MWReferenceEditPanel, so we should be able to use this class to also work with a sub-ref that has no distinct main reference node with the main content.

Task

The edit panel used in the MWReferenceDialog works with a MWReferenceModel object that's created from nodes currently. Originally the MWReferenceModel just reflects a node with one document for the content.

  • Expand MWReferenceModel to work with content and mainContent of sub-refs
  • Allow MWReferenceDialog to work on sub-ref nodes in a mode where the main content is edited
  • Route the entry points from the ContextMenu and ReferencesList to the MWReferenceDialog
Notes

Currently editing is happening around the MWReferenceModel class. So we always have to create that class from whatever we want to edit. At the moment we assume that we're coming from a MWReferenceNode and then convert that into a model.

Details

Related Changes in Gerrit:
SubjectRepoBranchLines +/-
mediawiki/extensions/Citemaster+101 -22
mediawiki/extensions/Citemaster+12 -15
mediawiki/extensions/Citemaster+14 -3
mediawiki/extensions/Citemaster+17 -54
mediawiki/extensions/Citemaster+2 -70
mediawiki/extensions/Citemaster+70 -2
mediawiki/extensions/Citemaster+6 -5
mediawiki/extensions/Citemaster+14 -1
mediawiki/extensions/Citemaster+51 -5
mediawiki/extensions/Citemaster+40 -26
mediawiki/extensions/Citemaster+25 -0
mediawiki/extensions/Citemaster+47 -41
mediawiki/extensions/Citemaster+35 -31
mediawiki/extensions/Citemaster+92 -52
mediawiki/extensions/Citemaster+45 -0
mediawiki/extensions/Citemaster+44 -33
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
awight renamed this task from [Refactor] Remove dependencies on MWRefenceNodes/MWDocumentReferences from the EditPanel to [Refactor] Rewrite any MWReferenceNode dependencies related to the EditPanel.Oct 6 2025, 9:41 AM
awight updated the task description. (Show Details)

The most interesting place to look is ve.ce.MWReferencesListNode.prototype.renderListItem, where a mousedown handler will look up the first ref node and use that to open a reference dialog. If we can refactor this single, simple usage, then we probably have a pattern that can be applied anywhere.

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

[mediawiki/extensions/Cite@master] [WIP] Make it possible to edit an InternalItemNode directly

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

I'm finding that we need to prepare ve.dm.InternalList a bit more, so that it can return the listIndex for a given {group, key}.

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

[mediawiki/extensions/Cite@master] [WIP] [refactor] edit from references list without ref node

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

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

[mediawiki/extensions/VisualEditor@master] [squash] bump submodule for indexKeys fix

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

WMDE-Fisch renamed this task from [Refactor] Rewrite any MWReferenceNode dependencies related to the EditPanel to [Refactor] Rewrite any MWReferenceNode dependencies related to the MWReferenceEditPanel.Jan 26 2026, 10:45 AM
WMDE-Fisch renamed this task from [Refactor] Rewrite any MWReferenceNode dependencies related to the MWReferenceEditPanel to [Refactor] Work on content in the MWReferenceEditPanel without relying in `mainRefKey` or mainNodes.Feb 2 2026, 2:41 PM
WMDE-Fisch updated the task description. (Show Details)

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

[mediawiki/extensions/Cite@master] VE: Introduce MWEditReferenceNodeAction and wire use cases

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

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

[mediawiki/extensions/Cite@master] VE: Extract group change method in MWReferenceModel

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

Change #1252454 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] VE: Extract group change method in MWReferenceModel

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

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

[mediawiki/extensions/Cite@master] VE: Add QUnit test for MWReferenceModel.newFromReferenceNode

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

Change #1252569 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] VE: Add QUnit test for MWReferenceModel.newFromReferenceNode

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

Change #1223672 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] VE: Introduce MWEditReferenceNodeAction and wire use cases

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

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

[mediawiki/extensions/Cite@master] VE: Test for MWReferenceModel copySubReference

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

Change #1254169 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] VE: Test for MWReferenceModel copySubReference

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

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

[mediawiki/extensions/Cite@master] VE: Add mainDoc property for MWReferenceModel sub-refs

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

Change #1254201 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] VE: Add mainDoc property for MWReferenceModel sub-refs

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

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

[mediawiki/extensions/Cite@master] VE: Introduce subRefMode on the MWReferenceEditPanel

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

Change #1256245 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] VE: Introduce subRefMode on the MWReferenceEditPanel

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

WMDE-Fisch renamed this task from [Refactor] Work on content in the MWReferenceEditPanel without relying in `mainRefKey` or mainNodes to [Refactor] Allow editing main content of a sub-ref node without relying on a main node.Mon, Mar 23, 2:43 PM

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

[mediawiki/extensions/Cite@master] [WIP] VE: Allow the edit panel to edit simple main content on a subref

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

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

[mediawiki/extensions/Cite@master] VE: Add QUnit test for updating an internal item

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

WMDE-Fisch renamed this task from [Refactor] Allow editing main content of a sub-ref node without relying on a main node to [Refactor] Allow editing main content in the ReferenceDialog of a sub-ref node without relying on a main node.Mon, Mar 23, 5:27 PM
WMDE-Fisch updated the task description. (Show Details)

Change #1259167 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] VE: Add QUnit test for updating an internal item

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

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

[mediawiki/extensions/Cite@master] VE: Extract method to get command in MWEditReferenceNodeAction

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

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

[mediawiki/extensions/Cite@master] [WIP] Experiment with a uniform InternalItemNode interface to the edit panel

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

Change #1261513 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] VE: Extract method to get command in MWEditReferenceNodeAction

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

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

[mediawiki/extensions/Cite@master] VE: Add nodeToEdit support for CitationDialog

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

Change #1193837 abandoned by WMDE-Fisch:

[mediawiki/extensions/Cite@master] [refactor] Edit panel targets an InternalItemNode directly

Reason:

Succeeded by Icc6ca06b6dc2e69958f10461b853980636f71ac8

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

Change #1196434 abandoned by WMDE-Fisch:

[mediawiki/extensions/Cite@master] [refactor] edit from references list without ref node

Reason:

Will be succeeded by something we do with Icc6ca06b6dc2e69958f10461b853980636f71ac8

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

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

[mediawiki/extensions/Cite@master] VE: Pass model to ReferenceDialog instead of node

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

Change #1269342 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] VE: Pass model to ReferenceDialog instead of node

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

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

[mediawiki/extensions/Cite@master] Revert "VE: Add mainDoc property for MWReferenceModel sub-refs"

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

Change #1269492 abandoned by WMDE-Fisch:

[mediawiki/extensions/Cite@master] Revert "VE: Add mainDoc property for MWReferenceModel sub-refs"

Reason:

To much rebase stress.

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

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

[mediawiki/extensions/Cite@master] VE: Remove mainDocument property from MWReferenceModel

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

Change #1269499 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] VE: Remove mainDocument property from MWReferenceModel

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

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

[mediawiki/extensions/Cite@master] VE: Add more helper methods to ReferenceModel and use them

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

Change #1270414 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] VE: Add getMainIndex helper method to ReferenceModel and use it

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

Change #1266943 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] VE: Allow passing a ReferenceModel to the CitationDialog

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

Change #1256099 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] VE: Allow editing main content that lacks a distinct ref node

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