ReplyWidget: Load modules required by the content when previewing

Unfortunately mw.Api#parse doesn't provide us with that part of the
response, so we have to manually construct the parameters.

Bug: T241193
Change-Id: Ie91d5ebc2ef483a69524b838dd3cb852e7c85cd2
This commit is contained in:
Bartosz Dziewoński 2020-01-02 15:59:50 +01:00
parent e9b1037ec6
commit 0de5591889

View file

@ -159,24 +159,33 @@ ReplyWidget.prototype.onInputChange = function () {
// wikitext = surface.getDom();
wikitext = this.textWidget.getValue();
if ( !wikitext.trim() ) {
parsePromise = $.Deferred().resolve( '' ).promise();
parsePromise = $.Deferred().resolve( null ).promise();
} else {
wikitext = controller.autoSign( wikitext );
wikitext = wikitext.slice( 0, -4 ) + '<span style="opacity: 0.5;">~~~~</span>';
wikitext = indent + wikitext.replace( /\n/g, '\n' + indent );
this.previewRequest = parsePromise = this.api.parse( wikitext, {
this.previewRequest = parsePromise = this.api.post( {
formatversion: 2,
action: 'parse',
text: wikitext,
pst: true,
prop: [ 'text', 'modules' ],
title: mw.config.get( 'wgPageName' )
} );
}
// TODO: Add list context
parsePromise.then( function ( html ) {
parsePromise.then( function ( response ) {
var heightAfter,
heightBefore = widget.$preview.outerHeight( true );
widget.$preview.html( html );
widget.$preview.html( response ? response.parse.text : '' );
heightAfter = widget.$preview.outerHeight( true );
if ( response ) {
mw.loader.load( response.parse.modulestyles );
mw.loader.load( response.parse.modules );
}
// TODO: IE11?
window.scrollBy( 0, heightAfter - heightBefore );
} );