mediawiki-extensions-Templa.../modules/ext.templateDataGenerator.editPage.js
Seb35 db1fb276a0 Do not display editor on non-wikitext pages
The editor is displayed on 'Sanitized CSS' pages (template pages
ending with .css), it should not because it is not interpreted as
wikitext and tags are not recognised.

Change-Id: I58195de1ae54252d57e1cd912ee52801a093729e
2018-09-01 13:03:49 +02:00

74 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.TextareaTarget( $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' ) {
target = new mw.TemplateData.VETarget( surface, 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;
}
} );
} );
} );
}() );