Utilisateur:Dr Brains/PagesInCategoryBOT.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.// <nowiki>
// Licence : Domaine public
var PagesInCategoryBOT_Page = mw.config.get('wgFormattedNamespaces')[2]+':'+mw.config.get('wgUserName')+'/List';
if(mw.config.get('wgNamespaceNumber')==14){
addOnloadHook(PagesInCategoryBOT_AddLink);
}
function PagesInCategoryBOT_AddLink(){
var OngletsCactions = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
OngletsCactions.innerHTML += '<li><a href="javascript:PagesInCategoryBOT_GetOptions();">Liste</a></li>';
}
function PagesInCategoryBOT_GetOptions(){
PagesInCategoryBOT_Page = prompt('Page où lister les pages de la catégorie ?', mw.config.get('wgFormattedNamespaces')[2]+':'+mw.config.get('wgUserName')+'/List');
if(!PagesInCategoryBOT_Page) return;
PagesInCategoryBOT_Run();
}
if( (mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1)){
var PagesInCategoryBOT_APILimit = 4999;
}else{
var PagesInCategoryBOT_APILimit = 499;
}
var PagesInCategoryBOT_PageInCategory = new Array();
var PagesInCategoryBOT_PageInCategoryCount = 0;
var PagesInCategoryBOT_CategoryInCategory = new Array();
var PagesInCategoryBOT_CategoryInCategoryCount = 0;
var PagesInCategoryBOT_IndexCategory = -1;
function PagesInCategoryBOT_Run(category, categorycontinue){
if(!category) category = mw.config.get('wgPageName');
if(!categorycontinue) categorycontinue = '';
var NouvelleRequete = new XMLHttpRequest()
var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&list=categorymembers&cmlimit='+PagesInCategoryBOT_APILimit+'&cmtitle=' + category + '&cmcontinue=' + categorycontinue;
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="0"')!=-1)||(ContenuInformation.indexOf('ns="1"')!=-1)||(ContenuInformation.indexOf('ns="14"')!=-1)){
var TitrePage = ContenuInformation.split('title="')[1].split('"')[0];
TitrePage = PagesInCategoryBOT_HTMLDecode(TitrePage);
TitrePage = TitrePage.split(mw.config.get('wgFormattedNamespaces')[1] + ':').join("");
if(TitrePage.indexOf(mw.config.get('wgFormattedNamespaces')[14] + ':')!=-1){
PagesInCategoryBOT_CategoryInCategory[PagesInCategoryBOT_CategoryInCategoryCount] = TitrePage;
PagesInCategoryBOT_CategoryInCategoryCount++
}else if(TitrePage.indexOf(mw.config.get('wgFormattedNamespaces')[14] + ':')==-1){
PagesInCategoryBOT_PageInCategory[PagesInCategoryBOT_PageInCategoryCount] = TitrePage;
PagesInCategoryBOT_PageInCategoryCount++
}
}
if(ContenuInformation.indexOf('cmcontinue=')!=-1){
AutreRequeteNecessaire = true;
var AutreRequeteContinue = ContenuInformation.split('cmcontinue="')[1].split('"')[0];
AutreRequeteContinue = PagesInCategoryBOT_HTMLDecode(AutreRequeteContinue);
}
}
if(AutreRequeteNecessaire==true){
PagesInCategoryBOT_Run(category, AutreRequeteContinue);
}else{
PagesInCategoryBOT_IndexCategory++
var NewCategory = PagesInCategoryBOT_CategoryInCategory[PagesInCategoryBOT_IndexCategory];
if(NewCategory){
PagesInCategoryBOT_Run(NewCategory);
}else{
PagesInCategoryBOT_SortList();
}
}
}
}
}
var PagesInCategoryBOT_SortedPageInCategory = new Array();
var PagesInCategoryBOT_SortedPageInCategoryCount = 0;
function PagesInCategoryBOT_SortList(){
var PagesTemp = PagesInCategoryBOT_PageInCategory.sort();
for(var a=0;a<PagesTemp.length;a++){
if(PagesTemp[a]!=PagesTemp[(a+1)]){
PagesInCategoryBOT_SortedPageInCategory[PagesInCategoryBOT_SortedPageInCategoryCount] = PagesTemp[a];
PagesInCategoryBOT_SortedPageInCategoryCount++
}
}
var PopContent = 'Nombre de pages à lister : ' + PagesInCategoryBOT_SortedPageInCategoryCount + '\n';
var Pop = confirm(PopContent);
if(Pop) PagesInCategoryBOT_Edit();
}
function PagesInCategoryBOT_Edit(){
var url = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + PagesInCategoryBOT_Page.replace(/&/g, "%26") + '&action=edit';
var NouvelleRequete = new XMLHttpRequest();
NouvelleRequete.open("GET", url, true);
NouvelleRequete.onreadystatechange = function() {
if(NouvelleRequete.readyState != 4 || NouvelleRequete.status != 200) return;
while(document.body.firstChild){ document.body.removeChild(document.body.firstChild);}
var ElementTraitement = document.createElement('div');
document.body.appendChild(ElementTraitement);
ElementTraitement.innerHTML = NouvelleRequete.responseText;
var TextArea = document.getElementById('wpTextbox1');
if(!TextArea){alert(url); return; }
var Category = mw.config.get('wgPageName').replace(/_/g, " ")
var TexteFinal = "\'\'\'[[:"+Category+"]]\'\'\'\n\n";
for(var a=0;a<PagesInCategoryBOT_SortedPageInCategory.length;a++){
TexteFinal += '# [['+PagesInCategoryBOT_SortedPageInCategory[a]+']]\n'
}
var SommaireFinal = '[[:'+Category+']] ; ([[:fr:User:Dr Brains/PagesInCategoryBOT.js|script]])';
document.getElementById('wpTextbox1').value = TexteFinal;
document.getElementById('wpSummary').value = SommaireFinal;
document.getElementById('wpMinoredit').checked = "checked";
//document.editform.submit();
}
NouvelleRequete.send(null);
}
function PagesInCategoryBOT_HTMLDecode(text){
var EncodedCharacter = new Array();
var DecodedCharacter = new Array();
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;
}
function PagesInCategoryBOT_CleanModele(Modele){
Modele = Modele.replace(/\n/g,"");
Modele = Modele.replace(/\| /g,"\|");
Modele = Modele.replace(/ \|/g,"\|");
Modele = Modele.replace(/\|\}/g,"\}");
Modele = Modele.replace(/\|\|/g,"\|");
return Modele;
}
// </nowiki>