Järjestelmäviesti:Gadget-SubstitutisSubstituendis.js
Huomautus: Selaimen välimuisti pitää tyhjentää asetusten tallentamisen jälkeen, jotta muutokset tulisivat voimaan.
- Firefox ja Safari: Napsauta Shift-näppäin pohjassa Päivitä, tai paina Ctrl-F5 tai Ctrl-R (⌘-R Macilla)
- Google Chrome: Paina Ctrl-Shift-R (⌘-Shift-R Macilla)
- Edge: Napsauta Ctrl-näppäin pohjassa Päivitä tai paina Ctrl-F5
mw.loader.using('mediawiki.api', function () {
var api = new mw.Api({
ajax: {
headers: {
'Api-User-Agent': 'SubstitutisSubstituendis/0.1'
}
}
});
window.Muokkaussubst = {};
/**
* Palauttaa promisen, jossa on annettu teksti substaukset substattuna.
**/
Muokkaussubst.tee_substaukset = function(title, text) {
var deferred = new $.Deferred();
if ( text.indexOf("{{" + "subst" + ":") === -1 ) {
deferred.resolve(text);
} else {
api.get({
action: 'parse',
format: 'json',
prop: 'text',
onlypst: 1,
contentmodel: 'wikitext',
text: text,
title: title,
}).done(function (data) {
if ( data && data.parse && data.parse.text && data.parse.text['*'] ) {
deferred.resolve(data.parse.text['*']);
}
}).catch(function (e) {
deferred.reject(e);
});
}
return deferred.promise();
};
if ( [ 'edit', 'submit' ].indexOf( mw.config.get( 'wgAction' ) ) !== -1 ) {
/**
* Korvaa muokkauslaatikon sisällön samalla sisällöllä, josta substaukset on substattu.
**/
Muokkaussubst.kasittele_editoitava = function () {
var $textbox = $('#wpTextbox1');
var orig_text;
var orig_selection = $textbox.textSelection( 'getSelection' );
if ( !orig_selection ) {
var pos = $textbox.textSelection( 'getCaretPosition' );
// Jos kursori on tarkalleen siinä, missä subst-teksti olisi, lisätään siihen subst.
var context = $textbox.val().substring(pos - 2, pos + 1);
if ( context.match(/\{\{[^{ \n]/) ) {
$textbox.textSelection( 'encapsulateSelection', { pre: 'subst:', post: '' } );
}
orig_text = $textbox.val();
}
Muokkaussubst.tee_substaukset(
mw.config.get('wgPageName'),
orig_text
).done(function (new_text) {
var selection = $textbox.textSelection( 'getSelection' );
// Katsotaan oliko tekstiä valittu vai muutetaanko koko teksti,
// ja varmistetaan, ettei teksti tai valinta ole muuttunut sillä
// välin kun tietoa haettiin.
if ( selection && selection === orig_selection ) {
$textbox.textSelection( 'replaceSelection', (new_text || orig_selection) );
} else if ( $textbox.val() === orig_text ) {
$textbox.val(new_text || orig_text);
}
}).catch(function (e) {
alert("Substaus ei onnistunut: " + e + "\n\nVarmista, ettei tekstialue ole liian iso. Voit valita pienemmän alueen.");
});
};
}
function customizeToolbar() {
var tools = {};
tools[ 'wtSubstaus' ] = {
label: 'Substaa substattavat',
type: 'button',
icon: '//upload.wikimedia.org/wikipedia/commons/3/35/Button_substitute.png',
action: {
type: 'callback',
execute: Muokkaussubst.kasittele_editoitava
}
};
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
section: 'main',
group: 'insert',
tools: tools
} );
}
if ( [ 'edit', 'submit' ].indexOf( mw.config.get( 'wgAction' ) ) !== -1 ) {
mw.loader.using( 'user.options' ).then( function () {
if ( mw.user.options.get( 'usebetatoolbar' ) == 1 ) {
$.when(
mw.loader.using( 'ext.wikiEditor' ), $.ready
).then( customizeToolbar );
}
} );
}
});