Utilisateur:Dr Brains/ListAllProjects.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.// Licence : Domaine public
var ListAllProjects_CommStart ='<!-- DÉBUT LISTE -->';
var ListAllProjects_CommEnd ='<!-- FIN LISTE -->';
var ListAllProjects_Resume = 'Mise à jour de la liste des projets';
function ListAllProjects_AddLink(){
var ButtonLink = document.getElementById('ListAllProjects_Link');
if(ButtonLink){
var Link = '<a href="javascript:ListAllProjects_Run();" title="Lancer la mise à jour">' + ButtonLink.innerHTML + '</a>';
ButtonLink.innerHTML = Link;
var Separator = document.createElement('br');
var ControlSpan = document.createElement('span');
ControlSpan.id = 'ListAllProjects_Control';
ButtonLink.parentNode.insertBefore(Separator, ButtonLink);
ButtonLink.parentNode.insertBefore(ControlSpan, Separator);
}
}
if(mw.config.get('wgPageName').indexOf("/Liste_des_Projets_BOT")!=-1) $(ListAllProjects_AddLink);
function ListAllProjects_Alert(Text){
if(!Text) Text = '';
var ControlElement = document.getElementById('ListAllProjects_Control');
if(ControlElement) ControlElement.innerHTML = Text;
}
var ListAllProjects_Array = [];
var ListAllProjects_Array_NoAccent = [];
var ListAllProjects_ArrayCount = -1;
function ListAllProjects_Run(ListContinue){
if(!ListContinue) ListContinue = '';
ListAllProjects_Alert("Listage : " + ListContinue);
if( (mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1) ){
var APILimit=4999;
}else{
var APILimit=499;
}
var NouvelleRequete = new XMLHttpRequest();
var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&list=allpages&aplimit='+APILimit+'&apnamespace=102&apfilterredir=nonredirects&apfrom=' + ListContinue;
NouvelleRequete.open("GET", AdresseRequete, true);
NouvelleRequete.send(null);
NouvelleRequete.onreadystatechange = function() {
if(NouvelleRequete.readyState == 4 && NouvelleRequete.status == 200) {
var ElementTraitement = document.createElement('div');
ElementTraitement.innerHTML = NouvelleRequete.responseText;
var Informations = ElementTraitement.getElementsByTagName('span');
var AutreRequeteNecessaire = false;
for(a=0;a<Informations.length;a++){
var ContenuInformation = Informations[a].innerHTML;
if(ContenuInformation.indexOf('ns="102"')!=-1){
var TitrePage = ContenuInformation.split('title="')[1].split('"')[0];
TitrePage = ListAllProjects_HTMLDecode(TitrePage);
if((TitrePage.indexOf('/')==-1)&&(TitrePage!="Projet:Accueil")){
ListAllProjects_ArrayCount++
ListAllProjects_Array[ListAllProjects_ArrayCount] = TitrePage;
ListAllProjects_Array_NoAccent[ListAllProjects_ArrayCount] = ListAllProjects_NoAccent(TitrePage);
}
}
if(ContenuInformation.indexOf('apfrom=')!=-1){
AutreRequeteNecessaire = true;
var AutreRequeteContinue = ContenuInformation.split('apfrom="')[1].split('"')[0];
AutreRequeteContinue = ListAllProjects_HTMLDecode(AutreRequeteContinue);
}
}
if(AutreRequeteNecessaire==true){
ListAllProjects_Run(AutreRequeteContinue);
}else{
ListAllProjects_Sort();
}
}
}
}
var ListAllProjects_SortedArray = [];
var ListAllProjects_SortedArrayCount = -1;
function ListAllProjects_Sort(){
ListAllProjects_Alert("Tri");
ListAllProjects_Array_NoAccent.sort();
for(var a=0;a<ListAllProjects_Array_NoAccent.length;a++){
for(var b=0;b<ListAllProjects_Array.length;b++){
if(ListAllProjects_NoAccent(ListAllProjects_Array[b]) == ListAllProjects_Array_NoAccent[a]){
ListAllProjects_SortedArrayCount++
ListAllProjects_SortedArray[ListAllProjects_SortedArrayCount] = ListAllProjects_Array[b]
}
}
}
ListAllProjects_Sleep();
}
var ListAllProjects_SleepingProjects = [];
function ListAllProjects_Sleep(ListContinue){
if(!ListContinue) ListContinue = '';
ListAllProjects_Alert("Listage projets endormis : " + ListContinue);
if( (mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1) ){
var APILimit=4999;
}else{
var APILimit=499;
}
var NouvelleRequete = new XMLHttpRequest();
var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&list=categorymembers&cmlimit='+APILimit+'&cmtitle=Catégorie:Projet en sommeil&cmcontinue=' + ListContinue;
NouvelleRequete.open("GET", AdresseRequete, true);
NouvelleRequete.send(null);
NouvelleRequete.onreadystatechange = function() {
if(NouvelleRequete.readyState == 4 && NouvelleRequete.status == 200) {
var ElementTraitement = document.createElement('div');
ElementTraitement.innerHTML = NouvelleRequete.responseText;
var Informations = ElementTraitement.getElementsByTagName('span');
var AutreRequeteNecessaire = false;
for(a=0;a<Informations.length;a++){
var ContenuInformation = Informations[a].innerHTML;
if(ContenuInformation.indexOf('ns="102"')!=-1){
var TitrePage = ContenuInformation.split('title="')[1].split('"')[0];
TitrePage = ListAllProjects_HTMLDecode(TitrePage);
if((TitrePage.indexOf('/')==-1)&&(TitrePage!="Portail:Accueil")){
ListAllProjects_SleepingProjects.push(TitrePage);
}
}
if(ContenuInformation.indexOf('cmcontinue=')!=-1){
AutreRequeteNecessaire = true;
var AutreRequeteContinue = ContenuInformation.split('cmcontinue="')[1].split('"')[0];
AutreRequeteContinue = ListAllProjects_HTMLDecode(AutreRequeteContinue);
}
}
if(AutreRequeteNecessaire==true){
ListAllProjects_Sleep(AutreRequeteContinue);
}else{
ListAllProjects_SortSleepingProjects();
}
}
}
}
var ListAllProjects_SortedSleepingArray = [];
function ListAllProjects_SortSleepingProjects(){
for(var a=0;a<ListAllProjects_SortedArray.length;a++){
var Match = false;
for(var b=0;b<ListAllProjects_SleepingProjects.length;b++){
if(ListAllProjects_SleepingProjects[b] == ListAllProjects_SortedArray[a]){
Match = true;
}else{
continue;
}
}
ListAllProjects_SortedSleepingArray[a] = Match;
Match = false;
}
ListAllProjects_Edit();
}
function ListAllProjects_Edit(){
ListAllProjects_Alert("Édition");
var ajaxRequest = new XMLHttpRequest();
var url = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + mw.config.get('wgPageName') + '&action=edit';
ajaxRequest.open("GET", url, true);
ajaxRequest.send(null);
ajaxRequest.onreadystatechange = function() {
if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
while(document.body.firstChild){document.body.removeChild(document.body.firstChild);}
ajaxResponse = ajaxRequest.responseText;
document.body.innerHTML = ajaxResponse;
var ContenuPage = document.getElementById("wpTextbox1").value;
var AncienResumeModif = document.editform.wpSummary.value;
var ProjectsList = ListAllProjects_CommStart + "\n# [[Projet:Accueil|'''Portail des projets''']]\n";
for(var a=0;a<ListAllProjects_SortedArray.length;a++){
if(ListAllProjects_SortedSleepingArray[a]){
ProjectsList += '# \'\'<small>[[' + ListAllProjects_SortedArray[a] + '|'+ListAllProjects_SortedArray[a].split('Projet:').join('')+']]</small>\'\'\n';
}else{
ProjectsList += '# [[' + ListAllProjects_SortedArray[a] + '|'+ListAllProjects_SortedArray[a].split('Projet:').join('')+']]\n';
}
}
ProjectsList += ListAllProjects_CommEnd;
var debutTexte = ContenuPage.substring(0, ContenuPage.indexOf(ListAllProjects_CommStart));
var AncienModele = ContenuPage.substring(0, ContenuPage.indexOf(ListAllProjects_CommEnd)) + ListAllProjects_CommEnd;
AncienModele = AncienModele.replace(debutTexte, "");
var finTexte = ContenuPage.split(debutTexte).join('').split(AncienModele).join('');
var TexteFinal = debutTexte + ProjectsList + finTexte;
document.getElementById ("wpTextbox1").value = TexteFinal ;
document.editform.wpSummary.value = AncienResumeModif + ListAllProjects_Resume ;
document.editform.submit();
}
}
}
function ListAllProjects_NoAccent(text){
text=text.replace(/Â/g,"A");
text=text.replace(/â/g,"a");
text=text.replace(/É/g,"E");
text=text.replace(/é/g,"e");
text=text.replace(/è/g,"e");
text=text.replace(/ê/g,"e");
text=text.replace(/ë/g,"e");
text=text.replace(/Î/g,"I");
text=text.replace(/î/g,"i");
text=text.replace(/ï/g,"i");
text=text.replace(/ô/g,"o");
text=text.replace(/ç/g,"c");
return text;
}
function ListAllProjects_HTMLDecode(text){
var EncodedCharacter = [];
var DecodedCharacter = [];
var CharacterCount = 0;
EncodedCharacter[CharacterCount] = "&";
DecodedCharacter[CharacterCount] = "&";
CharacterCount++;
EncodedCharacter[CharacterCount] = "'";
DecodedCharacter[CharacterCount] = "'";
CharacterCount++;
EncodedCharacter[CharacterCount] = """;
DecodedCharacter[CharacterCount] = '"';
CharacterCount++;
for(var a=0;a<EncodedCharacter.length;a++){
while(text.indexOf(EncodedCharacter[a])!=-1){
text = text.split(EncodedCharacter[a]).join(DecodedCharacter[a]);
if(text.indexOf(EncodedCharacter[a])==-1) break;
}
}
return text;
}