User:Leveking/monobook.js

/****** INIZIO TOOL DI RICERCA VOCI DA TRADURRE ******/ // controlla se l'array "array" contiene il valore "stringa" function contiene(array, stringa) { for (var i = 0; i < array.length; i++) { if (array[i] == stringa) { return true; }   }    return false; } var vociInglesi = new Array; var vociDaTrad = new Array; var interwikisCount = new Array; var noCategory = new Array; var countVociDaTrad = 0; // cicla sull'elenco delle categorie chieste dall'utente function analisiVoci { for (i = 0; i < vociInglesi.length; ++i) {       // Ricava l'elenco degli interwiki della voce in oggetto myXmlReq = wpajax.http({url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=query&prop=langlinks&titles='+escape(vociInglesi[i])+'&redirects&format=xml&lllimit=500', onSuccess: addToVociDaTrad, en: vociInglesi[i]}); } } function addToVociDaTrad(xmlreq, data) { var api = xmlreq.responseXML; var en = data.en; if (api == null) {       ++countVociDaTrad; return; }   // Cerca se c'è "it.wiki" interwikis = api.getElementsByTagName('ll'); trovato = ""; for (j=0; j it.wiki / No link if (trovato == "") {       vociDaTrad.push(en); interwikisCount.push(interwikis.length); }   if (++countVociDaTrad == vociInglesi.length) {       // ordina la lista vociDaTrad.sort // crea contenuto da salvare contenuto = ""; for (i = 0; i < vociDaTrad.length; ++i) {           contenuto += "" + vociDaTrad[i] + " (" + interwikisCount[i] + ")"; }       // crea lista categorie inesistenti nocat = ""; if (noCategory.length > 0) {           nocat += "Le seguenti categorie non esistono su "+wgContentLanguage+".wiki: "; for (i = 0; i < noCategory.length; ++i) {               nocat += noCategory[i] + ", "; }           nocat = nocat.substr(0, nocat.length-2) + "  "; }       // finito di creare la lista la mostro in una nuova finestra myRef = window.open('about:blank','mywin', 'left=20,top=20,width=500,height=300,toolbar=yes,resizable=yes'); myRef.document.write(" "); myRef.document.write("  Voci di "+wgContentLanguage+".wiki mancanti su it.wiki    "); myRef.document.write("Tra parentesi il numero di interlink presenti su "+wgContentLanguage+".wiki "); myRef.document.write(nocat); myRef.document.write(""+contenuto+""); myRef.document.write(" "); } } var totaleCategorie = 0; var countCategorie = 0; // cicla sull'elenco delle categorie chieste dall'utente function scansioneCategorie { categorie = $("Lista").value.split("\n"); totaleCategorie = categorie.length; for (i = 0; i < categorie.length; ++i) {       myXmlReq = wpajax.http({url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=query&list=categorymembers&cmprop=title&cmnamespace=0&cmlimit=500&format=xml&cmtitle=Category:'+categorie[i], onSuccess: addToVociInglesi, cat: categorie[i]}); }   // nascondo la finestra node=$('categorie'); node.parentNode.removeChild(node); } function addToVociInglesi(xmlreq, data) { var api = xmlreq.responseXML; var cat = data.cat; if (api.getElementsByTagName("categorymembers")[0].childNodes.length == 0) // categoria non esistente noCategory.push(cat); if (api) {       cm = api.getElementsByTagName('cm'); var voce=""; for(j=cm.length-1; j >= 0 ; j--) { voce = cm[j].attributes[1].nodeValue; if (voce == "") continue; if (!contiene(vociInglesi, voce)) // se non è già in lista vociInglesi.push(voce); }   }    if (++countCategorie == totaleCategorie) analisiVoci; } // mostra finestra in cui si chiede quali categorie tradurre function categorieDaTradurre { var msWndSetup = document.createElement('div'); msWndSetup.id = 'categorie'; msWndSetup.style.position = 'fixed'; msWndSetup.style.zIndex  = 1000; msWndSetup.style.left    =  '0px'; msWndSetup.style.top     =  '0px'; msWndSetup.style.backgroundColor = '#FFFFFF'; msWndSetup.style.borderStyle    = 'solid'; msWndSetup.style.borderWidth    = ' medium'; msWndSetup.style.borderColor    = '#000000'; msWndSetup.style.width = '300px'; msWndSetup.align = 'center'; var top = document.createElement('div'); top.id = 'categorieTop'; top.style.textAlign = 'right'; top.style.margin = '8px'; top.style.backgroundColor = '#DDDDDD'; msWndSetup.appendChild(top); var body = msWndSetup; var intro = document.createElement('p'); intro.innerHTML = "Elenco delle categorie da tradurre (una per riga e senza \"Category:\")   "; body.appendChild(intro); var Lista = document.createElement('textarea'); Lista.rows = 10; Lista.width = "90%"; Lista.wrap = 'off'; Lista.name = 'Lista'; Lista.id = 'Lista'; Lista.style.marginLeft = "10px"; Lista.style.marginRight = "10px"; Lista.style.width = "90%"; body.appendChild(Lista); // crea il bottone "Ok" var buttonOk = document.createElement('input'); buttonOk.value = 'Ok'; buttonOk.type = 'button'; buttonOk.style.margin = '8px'; buttonOk.setAttribute('onclick', 'scansioneCategorie'); // crea il bottone "Annulla" var buttonCancel = document.createElement('input'); buttonCancel.value = 'Annulla'; buttonCancel.type = 'button'; buttonCancel.style.margin = '8px'; buttonCancel.setAttribute('onclick', "javascript:node=$('categorie');node.parentNode.removeChild(node);"); body.innerHTML += "\n"; body.appendChild(buttonOk); body.appendChild(buttonCancel); // e lo mostra a video document.body.appendChild(msWndSetup); Lista.focus; } $(function {    addPortletLink('p-tb', 'javascript:categorieDaTradurre', 'Voci da tradurre', 'daTradIT');    $('daTradIT').firstChild.accessKey = 'V';    $('daTradIT').title = 'Voci da tradurre (Alt-Shift-V)'; }) /****** FINE TOOL DI RICERCA VOCI DA TRADURRE ******/ //