MediaWiki:Gadget-EoMagicalConversion.js
Kedźbu: Po składowanju dyrbiš snano pufrowak swojeho wobhladowaka wuprózdnić, zo by změny widźał.
- Firefox/Safari: Dźerž tastu Umsch tłóčenu a klikń na Znowa abo tłóč pak Strg-F5 abo Strg-R (⌘-R na Mac);
- Google Chrome: Tłóč na Strg-Umsch-R (⌘-Umsch-R na Mac)
- Internet Explorer: Dźěrź tastu Strg tłóčen a klikń na Znowa abo tłóč Strg-F5.
- Opera: Dźi k Menü → Einstellungen (Opera → Einstellungen na Mac) a potom k Datenschutz & Sicherheit → Browserdaten löschen → Gespeicherte Bilder und Dateien.
/* z meta */
/* Esperanto conversion script to emulate mediawiki's esperanto x-coding.
http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/languages/classes/LanguageEo.php?view=co&content-type=text%2Fplain
To do:
* remove loop detectors (if safe)
* test test
*/
if(mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit') {
var eoTextbox = 'wpTextbox1';
} else if(mw.config.get('wgCanonicalSpecialPageName') == 'Upload') {
var eoTextbox = 'wpUploadDescription';
}
if(window.eoTextbox) $(unconvertEsperanto);
function unconvertEsperanto() {
//add handlers to convert just before save/preview/upload
var eoBtns = ['wpSave','wpPreview','wpDiff','wpUpload']
for(var i=0;i<eoBtns.length;i++) {
var btn = getElementByIdOrName(eoBtns[i]);
if(btn) $(btn).on('click',convertEsperanto)
}
var token = getElementByIdOrName('wpEditToken');
if(token.value.indexOf('!!') == -1) {
token.value += '!!'
} else {
return;
}
var num = 0;
var obj = document.getElementById(eoTextbox);
var str = obj.value;
var pattern = /[cghjsu][x]+/i;
if(str.match(pattern)) {
while(str.match(pattern)) {
var eold = str.match(pattern)[0];
var enew = eold.substr(0,1) + '__!__';
eold = eold.substr(1);
while(eold.length > 0) {
enew += eold.substr(0,1) + 'x';
eold = eold.substr(1);
}
str = str.replace(str.match(pattern),enew);
num++; if(num>10000) { alert('Error: loop'); return; }
}
}
var pattern2 = /[\u0109\u011D\u0125\u0135\u015D\u016D\u0108\u011C\u0124\u0134\u015C\u016C][x]*/i;
var conv2 = {'\u0109':'c', '\u011D':'g', '\u0125':'h', '\u0135':'j', '\u015D':'s', '\u016D':'u', '\u0108':'C', '\u011C':'G', '\u0124':'H', '\u0134':'J', '\u015C':'S', '\u016C':'U'}
if(str.match(pattern2)) {
while(str.match(pattern2)) {
var eold = str.match(pattern2)[0];
var enew = conv2[eold.substr(0,1)] + '__!__x';
eold = eold.substr(1);
while(eold.length > 0) {
enew += eold.substr(0,1) + eold.substr(0,1).toLowerCase();
eold = eold.substr(1);
}
str = str.replace(str.match(pattern2),enew);
num++; if(num>10000) { alert('Error: loop'); return; }
}
}
if(num > 0) obj.value = str.replace(/__!__/ig,'')
}
function convertEsperanto() {
var token = getElementByIdOrName('wpEditToken');
if(token.value.indexOf('!!') != -1) {
token.value = token.value.replace(/!!/,'');
} else {
return;
}
var num = 0;
var obj = document.getElementById(eoTextbox);
var str = obj.value;
var pattern = /[cghjsu][x]+/i;
var conv = {'c':'\u0109', 'g':'\u011D', 'h':'\u0125', 'j':'\u0135', 's':'\u015D', 'u':'\u016D', 'C':'\u0108', 'G':'\u011C', 'H':'\u0124', 'J':'\u0134', 'S':'\u015C', 'U':'\u016C'}
if(str.match(pattern)) {
while(str.match(pattern)) {
var eold = str.match(pattern)[0];
var efst = eold.substr(0,1);
if(eold.length % 2 == 0) {
var enew = conv[efst] + '__!__';
eold = eold.substr(2);
} else {
var enew = efst + '__!__';
eold = eold.substr(1);
}
while(eold.length > 0) {
enew += eold.substr(0,1);
eold = eold.substr(2);
}
str = str.replace(str.match(pattern),enew);
num++; if(num>10000) { alert('Error: loop'); return; }
}
}
if(num > 0) obj.value = str.replace(/__!__/ig,'')
}
//Needed because the upload form submit has no ID
function getElementByIdOrName(idorname,par) {
var parent = (!par) ? document : par
if(parent.getElementById(idorname)) {
return parent.getElementById(idorname);
} else if(parent.getElementsByName(idorname)[0]) {
return parent.getElementsByName(idorname)[0];
} else {
return false;
}
}