User:Jalo/Sandbox3

//  // Tool che traduce tutti i wikilink presenti in una voce

//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<chars.length; i++) {    regex.compile(chars[i], "g");    string = string.replace(regex, '&' + entities[i] + ';');  }  return string; } //Alias di document.getElementById $ = function(id){    return document.getElementById(id); };

/****** INIZIO TOOL DI TRADUZIONE INTERWIKI ******/ // 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<to2 && to3<to1) // si tratta di un interwiki o di un link a namespace!=0. Va saltato        {            if (text.substring(0, to3) != "Category") // traduci le categorie            {                text = text.substring(2);                continue;            }        }        link = text.charAt(0).toUpperCase; // prima lettera maiuscola        link += text.substring(1, (to1<to2)?to1:to2);        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: wgServer + wgScriptPath + '/api.php?action=query&prop=langlinks&titles='+escape(elencoLink[x])+'&redirects&format=xml&lllimit=500',                    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 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=300,height=300,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 = 'Traduci i wikilink (Alt-Shift-T)';    } }) /****** FINE TOOL DI TRADUZIONE INTERWIKI ******/ //