Utilisateur:Dr Brains/CatsWithoutInterwiki.js
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.//<source lang=javascript>//<pre><nowiki>
var CatsWithoutInterwiki_Page = mw.config.get('wgFormattedNamespaces')[2]+":Dr Brains/Travaux/14";
//////////////////////////////////////////////////////////////////////////////////////////////////////////
if( (mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1)){
var CatsWithoutInterwiki_APILimit = 4999;
}else{
var CatsWithoutInterwiki_APILimit = 499;
}
var CatsWithoutInterwiki_DefaultsortAliases = new Array();
var CatsWithoutInterwiki_ControlElement;
if((mw.config.get('wgNamespaceNumber')==14)&&(mw.config.get('wgAction')=="view"||mw.config.get('wgAction')=="purge")){
addOnloadHook(CatsWithoutInterwiki_AddLink);
}
function CatsWithoutInterwiki_AddLink(){
var OngletsCactions = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
OngletsCactions.innerHTML += '<li><a title"Lister les catégories sans interwiki sur la page '+CatsWithoutInterwiki_Page+'" href="javascript:CatsWithoutInterwiki_Init();">Interwiki</a></li>';
}
function CatsWithoutInterwiki_Init(){
CatsWithoutInterwiki_ControlElement = document.createElement('div');
var Title = document.getElementsByTagName('h1')[0];
$(CatsWithoutInterwiki_ControlElement).insertAfter(Title)
CatsWithoutInterwiki_Run();
}
var CatsWithoutInterwiki_CategoryInCategory = new Array();
var CatsWithoutInterwiki_CategoryInCategoryID = new Array();
var CatsWithoutInterwiki_CategoryInCategoryCount = 0;
var CatsWithoutInterwiki_IndexCategory = -1;
function CatsWithoutInterwiki_Run(category, categorycontinue){
if(!category) category = mw.config.get('wgPageName');
if(!categorycontinue) categorycontinue = '';
var NouvelleRequete = new XMLHttpRequest()
var AdresseRequete = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&list=categorymembers&cmlimit='+CatsWithoutInterwiki_APILimit+'&cmtitle=' + category + '&cmcontinue=' + categorycontinue;
CatsWithoutInterwiki_ControlElement.innerHTML = 'Listing catégorie : <a href="'+ mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join(category) + '" >'+category+'</a>';
NouvelleRequete.open("GET", AdresseRequete, true);
NouvelleRequete.onreadystatechange = function() {
if(NouvelleRequete.readyState != 4 ) return;
var ObjetXML = NouvelleRequete.responseXML;
if(ObjetXML==null){ alert("Problème : \n"+AdresseRequete); return; }
var AllCats = ObjetXML.getElementsByTagName('cm');
for(var a=0;a<AllCats.length;a++){
var Ns = parseInt(AllCats[a].getAttribute('ns'));
var Title = AllCats[a].getAttribute('title');
var Version = AllCats[a].getAttribute('pageid');
//alert(Title + " - " + Ns + " - " + Version);
if(Ns==14 && CatsWithoutInterwiki_CategoryInCategory.indexOf(Title)==-1 && Title.indexOf("Wikipédia")==-1){
CatsWithoutInterwiki_CategoryInCategory[CatsWithoutInterwiki_CategoryInCategoryCount] = Title;
CatsWithoutInterwiki_CategoryInCategoryID[CatsWithoutInterwiki_CategoryInCategoryCount] = Version;
CatsWithoutInterwiki_CategoryInCategoryCount++
}
}
var Autrerequete = ObjetXML.getElementsByTagName('query-continue')[0];
if(Autrerequete){
var AutreRequeteContinue = Autrerequete.getElementsByTagName('categorymembers')[0].getAttribute('cmcontinue');
CatsWithoutInterwiki_Run(category, AutreRequeteContinue);
}else{
CatsWithoutInterwiki_IndexCategory++
var NewCategory = CatsWithoutInterwiki_CategoryInCategory[CatsWithoutInterwiki_IndexCategory];
if(NewCategory){
CatsWithoutInterwiki_Run(NewCategory);
}else{
CatsWithoutInterwiki_SortList();
}
}
}
NouvelleRequete.send(null);
}
var CatsWithoutInterwiki_SortedCategoriesInCategory = new Array();
var CatsWithoutInterwiki_SortedCategoriesInCategoryID = new Array();
var CatsWithoutInterwiki_SortedCategoriesInCategoryCount = 0;
function CatsWithoutInterwiki_SortList(){
CatsWithoutInterwiki_ControlElement.innerHTML = "Tri des pages";
var PagesTemp = new Array();
for(var a=0;a<CatsWithoutInterwiki_CategoryInCategory.length;a++){
PagesTemp[a] = CatsWithoutInterwiki_CategoryInCategory[a] + ";" + ( CatsWithoutInterwiki_CategoryInCategoryID[a] ? "&oldid="+ CatsWithoutInterwiki_CategoryInCategoryID[a] : "");
}
PagesTemp = PagesTemp.sort();
for(var a=0;a<PagesTemp.length;a++){
if(PagesTemp[a]!=PagesTemp[(a+1)]){
var PageName = PagesTemp[a].replace(/;.*/g, "");
var ID = PagesTemp[a].replace(/.*;/g, "");
CatsWithoutInterwiki_SortedCategoriesInCategory[CatsWithoutInterwiki_SortedCategoriesInCategoryCount] = PageName;
CatsWithoutInterwiki_SortedCategoriesInCategoryID[CatsWithoutInterwiki_SortedCategoriesInCategoryCount] = ID;
CatsWithoutInterwiki_SortedCategoriesInCategoryCount++
}
}
var PopContent = 'Nombre de pages à vérifier : ' + CatsWithoutInterwiki_SortedCategoriesInCategoryCount + '\n\n'+CatsWithoutInterwiki_SortedCategoriesInCategory.join('\n');
var Pop = true;
//Pop = confirm(PopContent);
if(!Pop) return;
CatsWithoutInterwiki_GetInterwikis(0);
}
var CatsWithoutInterwiki_CatsWithoutInterwikiCount = 0;
var CatsWithoutInterwiki_Lines = new Array();
function CatsWithoutInterwiki_GetInterwikis(position){
var Page = CatsWithoutInterwiki_SortedCategoriesInCategory[position];
if(!Page){
CatsWithoutInterwiki_Edit();
return;
}
CatsWithoutInterwiki_ControlElement.innerHTML = 'Recherche interwikis : <a href="'+ mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join(Page) + '" >'+Page+'</a>';
var NouvelleRequete = new XMLHttpRequest()
var AdresseRequete = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&prop=langlinks&lllimit='+CatsWithoutInterwiki_APILimit+'&titles='+Page+'&redirects';
NouvelleRequete.open("GET", AdresseRequete, true);
NouvelleRequete.onreadystatechange = function() {
if(NouvelleRequete.readyState == 4) {
var ObjetXML = NouvelleRequete.responseXML;
if(!ObjetXML){
alert('La requête API a échoué :\n'+AdresseRequete);
return;
}
var Interwikis = "";
var LangLinks = ObjetXML.getElementsByTagName('ll');
for(var a=0;a<LangLinks.length;a++){
var ThisLang = LangLinks[a].getAttribute("lang");
var ThisLangLink = LangLinks[a].firstChild.nodeValue;
Interwikis+= "\n* [[:"+ThisLang+":"+ThisLangLink+"]]"
}
if(Interwikis=="") CatsWithoutInterwiki_CatsWithoutInterwikiCount++
var Line = '|-\n| valign="top" | [[:'+Page+']] \n| align="left" valign="top" |'+Interwikis+'\n';
CatsWithoutInterwiki_Lines.push(Line);
CatsWithoutInterwiki_GetInterwikis((position+1));
}
}
NouvelleRequete.send(null);
}
var CatsWithoutInterwiki_TableResume = '';
var CatsWithoutInterwiki_TableStart = '{| class="wikitable sortable centre" width="100%"\n'
+ '|+ [[Utilisateur:Dr Brains/CatsWithoutInterwiki.js|Mise à jour]] des catégories sans interwikis dans la catégorie [[:Catégorie:'+mw.config.get('wgTitle')+'|'+mw.config.get('wgTitle')+']] : $1/$2\n'
+ '|-\n'
+ '! Page\n'
+ '! Interwikis\n';
var CatsWithoutInterwiki_TableEnd = '|}';
function CatsWithoutInterwiki_Edit(){
CatsWithoutInterwiki_ControlElement.innerHTML = "Édition : "+ CatsWithoutInterwiki_Page;
var url = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + CatsWithoutInterwiki_Page.replace(/&/g, "%26") + '&action=edit';
var NouvelleRequete = new XMLHttpRequest();
NouvelleRequete.open("GET", url, true);
NouvelleRequete.onreadystatechange = function() {
if(NouvelleRequete.readyState != 4) return;
while(document.body.firstChild){ document.body.removeChild(document.body.firstChild);}
document.body.innerHTML = NouvelleRequete.responseText;
var Texte = CatsWithoutInterwiki_TableStart;
Texte = Texte.split('$1').join(CatsWithoutInterwiki_CatsWithoutInterwikiCount);
Texte = Texte.split("$2").join(CatsWithoutInterwiki_Lines.length);
for(var a=0;a<CatsWithoutInterwiki_Lines.length;a++){
Texte += CatsWithoutInterwiki_Lines[a]
}
Texte += CatsWithoutInterwiki_TableEnd
document.getElementById("wpTextbox1").value = Texte;
document.getElementById("wpSummary").value = "Mise à jour pages sans interwikis : [[Catégorie:"+mw.config.get('wgTitle')+"|"+mw.config.get('wgTitle')+"]]";
document.editform.submit();
}
NouvelleRequete.send(null);
}
// </nowiki></pre></source>