mediawiki-extensions-Templa.../modules/ext.templateDataGenerator.editPage.js
Ed Sanders 34924e0a0b Remove VETarget, use textSelection API
The textSelection API works with VE wikitext mode , so we
can use the same code for both editors.

Change-Id: I9032733b14d115bad8dcadefc50e791cf30eed7d
2018-11-14 14:53:42 +00:00

76 lines
2.1 KiB
JavaScript

( function () {
/*!
* TemplateData Generator button fixture
* The button will appear on Template namespaces only, above the edit textbox
*
* @author Moriel Schottlender
*/
'use strict';
/* global ve */
$( function () {
// Check if we're in the proper namespace
if ( mw.config.get( 'wgCanonicalNamespace' ) !== 'Template' ||
mw.config.get( 'wgPageContentModel' ) !== 'wikitext'
) {
return;
}
new mw.Api().loadMessages( 'templatedata-doc-subpage', { amlang: mw.config.get( 'wgContentLanguage' ) } ).then( function () {
var pieces, isDocPage, target,
pageName = mw.config.get( 'wgPageName' ),
docSubpage = mw.msg( 'templatedata-doc-subpage' ),
config = {
pageName: pageName,
isPageSubLevel: false
},
$textbox = $( '#wpTextbox1' );
pieces = pageName.split( '/' );
isDocPage = pieces.length > 1 && pieces[ pieces.length - 1 ] === docSubpage;
config = {
pageName: pageName,
isPageSubLevel: pieces.length > 1,
parentPage: pageName,
isDocPage: isDocPage,
docSubpage: docSubpage
};
// Only if we are in a doc page do we set the parent page to
// the one above. Otherwise, all parent pages are current pages
if ( isDocPage ) {
pieces.pop();
config.parentPage = pieces.join( '/' );
}
// Textbox wikitext editor
if ( $textbox.length ) {
// Prepare the editor
target = new mw.TemplateData.Target( $textbox, config );
$( '#mw-content-text' ).prepend( target.$element );
}
// Visual editor source mode
mw.hook( 've.activationComplete' ).add( function () {
var surface = ve.init.target.getSurface();
if ( surface.getMode() === 'source' ) {
// Source mode will have created a dummy textbox
$textbox = $( '#wpTextbox1' );
target = new mw.TemplateData.Target( $textbox, config );
// Use the same font size as main content text
target.$element.addClass( 'mw-body-content' );
$( '.ve-init-mw-desktopArticleTarget-originalContent' ).prepend( target.$element );
}
} );
mw.hook( 've.deactivate' ).add( function () {
if ( target ) {
target.destroy();
target = null;
}
} );
} );
} );
}() );