Utilisateur:Dr Brains/ListAllProjectsTalkpage.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 ListAllProjectsPDD_CommStart ='<!-- DÉBUT LISTE -->';
var ListAllProjectsPDD_CommEnd ='<!-- FIN LISTE -->';
var ListAllProjectsPDD_Resume = 'Mise à jour de la liste des projets';
function ListAllProjectsPDD_AddLink(){
var ButtonLink = document.getElementById('ListAllProjectsPDD_Link');
if(ButtonLink){
var Link = '<a href="javascript:ListAllProjectsPDD_Run();" title="Lancer la mise à jour">' + ButtonLink.innerHTML + '</a>';
ButtonLink.innerHTML = Link;
var Separator = document.createElement('br');
var ControlSpan = document.createElement('span');
ControlSpan.id = 'ListAllProjectsPDD_Control';
ButtonLink.parentNode.insertBefore(Separator, ButtonLink);
ButtonLink.parentNode.insertBefore(ControlSpan, Separator);
}
}
if(mw.config.get('wgPageName').indexOf("/Liste_des_pdd_de_projets_BOT")!=-1) $(ListAllProjectsPDD_AddLink);
function ListAllProjectsPDD_Alert(Text){
if(!Text) Text = '';
var ControlElement = document.getElementById('ListAllProjectsPDD_Control');
if(ControlElement) ControlElement.innerHTML = Text;
}
var ListAllProjectsMain_Array = [];
function ListAllProjectsPDD_Run(ListContinue){
if(!ListContinue) ListContinue = '';
ListAllProjectsPDD_Alert("Listage : " + ListContinue);
if( (mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1) ){
var APILimit = 5000;
}else{
var APILimit = 500;
}
var queryopt = {
action : 'query',
list : 'allpages',
aplimit : APILimit,
apnamespace : 102,
apfilterredir : 'nonredirects'
};
if(ListContinue) queryopt.apcontinue = ListContinue;
queryopt.continue = '';
var api = new mw.Api();
api.get(queryopt).then(function(data){
if(data.query.allpages){
var pages = data.query.allpages;
for(var a=0,l=pages.length;a<l;a++){
var title = pages[a].title;
if((title.indexOf('/')==-1) && (title != "Projet:Accueil")){
ListAllProjectsMain_Array.push(title);
}
}
}
if(data.query.continue && data.query.continue.apcontinue){
ListAllProjectsPDD_Run(data.query.continue.apcontinue);
}else{
alert("AllProjects : "+ListAllProjectsMain_Array.length);
ListAllProjectsPDD_getMaintenanceProjects();
}
});
}
var ListAllProjectsPDD_MaintenanceProjects = [];
function ListAllProjectsPDD_getMaintenanceProjects(ListContinue){
if(!ListContinue) ListContinue = '';
ListAllProjectsPDD_Alert("Listage projets endormis : " + ListContinue);
if( (mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1) ){
var APILimit = 5000;
}else{
var APILimit = 500;
}
var queryopt = {
action : 'query',
list : 'categorymembers',
cmlimit : APILimit,
cmtitle : "Catégorie:Projet de maintenance",
cmcontinue : ListContinue,
continue : ''
}
var api = new mw.Api();
api.get(queryopt).then(function(data){
if(data.query.categorymembers) {
var AllCM = data.query.categorymembers;
var CM = AllCM.length;
for(var a=0,l=CM;a<l;a++){
var title = AllCM[a].title;
title = title.replace(/^Catégorie:/g, "");
ListAllProjectsPDD_MaintenanceProjects.push(title);
}
}
if(data.query.continue && data.query.continue.cmcontinue){
ListAllProjectsPDD_getMaintenanceProjects(data.query.continue.cmcontinue);
}else{
alert("MaintenanceProjects : "+ListAllProjectsPDD_MaintenanceProjects.length);
ListAllProjectsPDD_getRealProjects();
}
});
}
function ListAllProjectsPDD_getRealProjects(){
var RealProjects = [];
for(var a=0,l=ListAllProjectsMain_Array.length;a<l;a++){
var P = ListAllProjectsMain_Array[a];
if(ListAllProjectsPDD_MaintenanceProjects.indexOf(P) === -1 && RealProjects.indexOf(P) === -1) RealProjects.push(P.split("Projet:").join(""));
}
alert("RealProjects : "+RealProjects.length);
ListAllProjectsPDD_getRelatedPDD(RealProjects);
}
var ListAllRedirectedProjectsPDD = {};
function ListAllProjectsPDD_getRelatedPDD(arr){
if(arr.length===0) return ListAllProjectsPDD_Edit();
ListAllProjectsPDD_Alert("Recherche des pdd");
if( (mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1) ){
var APILimit = 500;
}else{
var APILimit = 50;
}
var titles = [];
var remainingtitles = [];
for(var a=0,l=arr.length;a<l;a++){
var title = arr[a];
if(a<APILimit) titles.push("Discussion Projet:"+title);
else remainingtitles.push(title);
}
var queryopt = {
action : 'query',
prop : ['info','revisions'],
rvprop : 'content',
titles : titles,
continue : ''
}
var api = new mw.Api();
api.get(queryopt).then(function(data){
var pages = data.query.pages;
if(pages){
var NS = "Discussion Projet:"
for(var id in pages){
var page = pages[id];
var title = page.title;
var ismissing = page.missing === "";
var isredirect = page.redirect === "";
if(!ismissing){
if(isredirect){
var revision = page.revisions[0];
var target = revision["*"].replace(/.*\[/g, "").replace(/\].*/g, "");
ListAllRedirectedProjectsPDD[title] = target;
}
}
}
}
ListAllProjectsPDD_getRelatedPDD(remainingtitles);
});
}
function ListAllProjectsPDD_Edit(){
ListAllProjectsPDD_Alert("Édition");
var URL = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + mw.config.get('wgPageName') + '&action=edit';
$.ajax({ url : URL, complete : function(editReq){
while(document.body.firstChild){document.body.removeChild(document.body.firstChild);}
ajaxResponse = editReq.responseText;
document.body.innerHTML = ajaxResponse;
var ContenuPage = document.getElementById("wpTextbox1").value;
var AncienResumeModif = document.editform.wpSummary.value;
var ProjectsList = ListAllProjectsPDD_CommStart + "\n";
for(var a=0,l=ListAllProjectsMain_Array.length;a<l;a++){
var project = ListAllProjectsMain_Array[a];
if(ListAllRedirectedProjectsPDD[project]){
var pdd = ListAllRedirectedProjectsPDD[project];
ProjectsList += '# \'\'\'[[' + project + '|'+project.split('Projet:').join('')+']] : '
+ '[['+pdd+']]\'\'\'\n';
}else{
var pdd = "Discussion Projet:" + project.split("Projet:").join("");
ProjectsList += '# [[' + project + '|'+project.split('Projet:').join('')+']] : '
+ '[['+pdd+']]\n';
}
}
ProjectsList += ListAllProjectsPDD_CommEnd;
var debutTexte = ContenuPage.substring(0, ContenuPage.indexOf(ListAllProjectsPDD_CommStart));
var AncienModele = ContenuPage.substring(0, ContenuPage.indexOf(ListAllProjectsPDD_CommEnd)) + ListAllProjectsPDD_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 + ListAllProjectsPDD_Resume ;
// document.editform.submit();
}});
}