Page MenuHomePhabricator

Allow cross-slot access during HTML rendering.
Open, MediumPublic

Description

When generating a ParserOutput object for the content of one slot (via ContentHandler::getParserOutput), it should be possible to access the Content of other slots in the same revision, to allow cross-slot data access (e.g. transcluding information from some auxiliary slot into the output of the main slot). This should work for atomic edits too: when previewing an edit that changes slots X and Y, and the content of slot X uses parts of Y, the new content of Y should be visible in the rendering of X (as well as in the combined rendering of all slots).

An initial idea is to pass RevisionSlots (including inherited slots, after PST) to ContentHandler::getParserOutput. The relevant code is in WikiPage::prepareContentForEdit (resp. PageUpdater::prepareContentForEdit).

Note: This does not block SDC General, since SDC doesn't use atomic edits, and Wikibase doesn't rely on MediaWiki's transclusion mechanism. For cross-slot access as needed by SDC, see T194730: Ensure that Wikibase data access to MediaInfo on file description pages works with MCR .

Related Objects

StatusSubtypeAssignedTask
Declineddchen
OpenNone
OpenNone
DuplicateNone
OpenFeatureNone
OpenBUG REPORTNone
OpenNone
StalledNone
OpenFeatureNone
DuplicateNone
ResolvedNone
OpenNone
OpenNone
OpenFeatureNone
OpenNone
ResolvedNone
ResolvedNone
OpenFeatureNone
OpenNone
OpenFeatureNone
StalledNone
OpenNone
OpenNone
Resolveddaniel
Resolveddaniel
InvalidTgr
Resolveddaniel
ResolvedTgr
ResolvedTgr
ResolvedTgr
ResolvedBstorm
ResolvedCCicalese_WMF
Resolvededwardspec
OpenNone
Resolvedawight
OpenNone
OpenNone
OpenNone
OpenNone
OpenNone
OpenNone
Resolvedovasileva
StalledNone
ResolvedAmmarpad
OpenNone
StalledNone
ResolvedJdlrobson
Resolvedphuedx
OpenJdlrobson
Resolvedovasileva
Resolved marcella
Resolvedmatmarex
ResolvedBUG REPORTEsanders
Resolvedovasileva
Resolvedovasileva
ResolvedJdlrobson
OpenNone
Resolved jkroll
StalledFeatureNone
OpenNone
StalledNone
OpenNone
OpenNone
Resolveddaniel
ResolvedJdforrester-WMF
Resolveddaniel
ResolvedJdforrester-WMF
ResolvedJdforrester-WMF
DeclinedNone

Event Timeline

daniel triaged this task as Medium priority.Feb 21 2018, 7:57 PM
daniel created this task.

A straight forward approach to this would be passing RevisionSlots (including inherited slots, after PST) to ContentHandler::getParserOutput. The relevant code is in WikiPage::prepareContentForEdit (resp. PageUpdater::prepareContentForEdit).

Note that there's plenty of other code that calls Content::getParserOutput().

Chances are the better method for doing it is to go via Parser::fetchCurrentRevisionOfTitle(), or directly through ParserOptions::getCurrentRevisionCallback() if a Parser isn't available.