User:Austro/vector.js

//Funzioni per fare le query al DB con api.php

var wpajax = {

http: function(bundle) {

// mandatory: bundle.url

// optional: bundle.async

// optional: bundle.method

// optional: bundle.headers

// optional: bundle.data

// optional: bundle.onSuccess (xmlhttprequest, bundle)

// optional: bundle.onFailure (xmlhttprequest, bundle)

// optional: bundle.otherStuff OK too, passed to onSuccess and onFailure

var xmlhttp;

try {

xmlhttp = new XMLHttpRequest();

} catch(e) {

try {

xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");

} catch (e) {

try {

xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

} catch (e) {

xmlhttp = false

}

}

}

if (xmlhttp) {

xmlhttp.onreadystatechange = function() {

if (xmlhttp.readyState == 4)

wpajax.httpComplete(xmlhttp,bundle);

};

xmlhttp.open(bundle.method ? bundle.method : "GET",bundle.url,bundle.async == false ? false : true);

if (bundle.headers) {

for (var field in bundle.headers)

xmlhttp.setRequestHeader(field,bundle.headers[field]);

}

xmlhttp.send(bundle.data ? bundle.data : null);

}

return xmlhttp;

},

httpComplete: function(xmlhttp,bundle) {

if (xmlhttp.status == 200 || xmlhttp.status == 302) {

if (bundle.onSuccess)

bundle.onSuccess(xmlhttp,bundle);

} else if (bundle.onFailure) {

bundle.onFailure(xmlhttp,bundle);

} else {

// A activer en debug mode ?

// alert(xmlhttp.statusText);

}

}

};

// Parser

if (document.implementation.createDocument) {

var gml_xmlparser = new DOMParser();

}

function gml_XMLParse(string) {

if (document.implementation.createDocument) {

return gml_xmlparser.parseFromString(string, "text/xml");

} else if (window.ActiveXObject) {

var gml_xmldoc = new ActiveXObject("Microsoft.XMLDOM");

gml_xmldoc.async = "false";

ret = gml_xmldoc.loadXML(string);

if (!ret)

return null;

return gml_xmldoc.documentElement;

}

return null;

}

// HTMLize

String.prototype.htmlize = function() {

var chars = new Array('&','<','>','"');

var entities = new Array('amp','lt','gt','quot');

var regex = new RegExp();

var string = this;

for (var i=0; i

regex.compile(chars[i], "g");

string = string.replace(regex, '&' + entities[i] + ';');

}

return string;

}

//Alias di document.getElementById

$ = function(id){

return document.getElementById(id);

};

/****** Traduzione automatica dei wikilink da lingua straniera in italiano *******/

// Elenco dei

var elencoLink = new Array();

function tradToIT()

{

// Recupera l'area di testo

text = $("wpTextbox1").value;

elencoLink.length=0;

result = "";

inseriti = "|";

while (text.indexOf("[[") != -1)

{

text = text.substring(text.indexOf("[[")+2);

to1 = text.indexOf("]]");

if (to1 == -1)

to1 = 10000000;

to2 = text.indexOf("|");

if (to2 == -1)

to2 = 10000000;

to3 = text.indexOf(":");

if (to3 == -1)

to3 = 10000000;

if (to3

{

text = text.substring(2);

continue;

}

link = text.charAt(0).toUpperCase(); // prima lettera maiuscola

link += text.substring(1, (to1

if (inseriti.indexOf("|"+link+"|") == -1)

elencoLink[elencoLink.length] = link; // così non mette i doppioni

inseriti += link+"|";

}

// Per ogni

for (x in elencoLink)

{

// Ricava l'elenco degli interwiki della voce in oggetto

wpajax.http({url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=query&prop=langlinks&titles='+escape(elencoLink[x])+'&redirects&format=xml&lllimit=5000',

onSuccess: addRow, en: elencoLink[x] });

}

}

// Crea la lista dei risultati

var result = "";

var total=0;

function addRow(xmlreq, data) {

var api = xmlreq.responseXML;

var en = data.en;

// Cerca se c'è "it.wiki"

interwikis = api.getElementsByTagName('ll');

trovato = "";

for (i=0; i

if (interwikis[i].getAttribute('lang')=="it")

{

trovato = interwikis[i].textContent;

break;

}

// Aggiungi al totale la riga: en.wiki => it.wiki / No link

if (trovato != "")

result += "" + en + " => " + trovato + "
";

else

result += "" + en + " => No link
";

if (++total == elencoLink.length)

{

// splitto su

list = result.split("
");

// ordina la lista

list.sort();

// ricrea la stringa

result = list.join("
");

result = result.substring(5); // elimino il
iniziale

// Mostra tutta la lista calcolata

total=0;

myRef = window.open('about:blank','mywin', 'left=20,top=20,width=500,height=500,toolbar=yes,resizable=yes');

myRef.document.write("

"+result+"
");

}

}

addOnloadHook(function () {

if (wgAction=="edit")

{

addPortletLink('p-tb', 'javascript:tradToIT()', 'Traduci i wikilink', 'tradIT');

$('tradIT').firstChild.accessKey = 'T';

$('tradIT').title = 'Alt-Shift-T';

}

})