Utilisateur:Dr Brains/AjoutModeleBOT.js
Apparence
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) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.// <nowiki>
// Licence : Domaine public
var AjoutModeleBOT_Modele = '';
var AjoutModeleBOT_Multi = true;
var AjoutModeleBOT_AutoSave = false;
if(mw.config.get('wgNamespaceNumber')==14){
addOnloadHook(AjoutModeleBOT_AddLink);
}
function AjoutModeleBOT_AddLink(){
var OngletsCactions = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
OngletsCactions.innerHTML += '<li><a href="javascript:AjoutModeleBOT_GetOptions();">Modèle</a></li>';
}
function AjoutModeleBOT_GetOptions(){
AjoutModeleBOT_Modele = prompt('Bandeau à ajouter : ', '');
if(AjoutModeleBOT_Modele==''){
return;
}else{
AjoutModeleBOT_Multi = confirm('Recherche dans les sous-catégorie ?');
AjoutModeleBOT_AutoSave = confirm('Publier sans confirmation manuelle ?');
AjoutModeleBOT_Run();
}
}
if( (mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1)){
var AjoutModeleBOT_APILimit = 4999;
}else{
var AjoutModeleBOT_APILimit = 499;
}
var AjoutModeleBOT_PageInCategory = new Array();
var AjoutModeleBOT_PageInCategoryCount = 0;
var AjoutModeleBOT_CategoryInCategory = new Array();
var AjoutModeleBOT_CategoryInCategoryCount = 0;
var AjoutModeleBOT_IndexCategory = -1;
function AjoutModeleBOT_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='+AjoutModeleBOT_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 = AjoutModeleBOT_HTMLDecode(TitrePage);
TitrePage = TitrePage.split(mw.config.get('wgFormattedNamespaces')[1] + ':').join("");
if((TitrePage.indexOf(mw.config.get('wgFormattedNamespaces')[14] + ':')!=-1)&&(AjoutModeleBOT_Multi)){
AjoutModeleBOT_CategoryInCategory[AjoutModeleBOT_CategoryInCategoryCount] = TitrePage;
AjoutModeleBOT_CategoryInCategoryCount++
}else if(TitrePage.indexOf(mw.config.get('wgFormattedNamespaces')[14] + ':')==-1){
AjoutModeleBOT_PageInCategory[AjoutModeleBOT_PageInCategoryCount] = TitrePage;
AjoutModeleBOT_PageInCategoryCount++
}
}
if(ContenuInformation.indexOf('cmcontinue=')!=-1){
AutreRequeteNecessaire = true;
var AutreRequeteContinue = ContenuInformation.split('cmcontinue="')[1].split('"')[0];
AutreRequeteContinue = AjoutModeleBOT_HTMLDecode(AutreRequeteContinue);
}
}
if(AutreRequeteNecessaire==true){
AjoutModeleBOT_Run(category, AutreRequeteContinue);
}else{
AjoutModeleBOT_IndexCategory++
var NewCategory = AjoutModeleBOT_CategoryInCategory[AjoutModeleBOT_IndexCategory];
if(NewCategory){
AjoutModeleBOT_Run(NewCategory);
}else{
AjoutModeleBOT_SortList();
}
}
}
}
}
var AjoutModeleBOT_SortedPageInCategory = new Array();
var AjoutModeleBOT_SortedPageInCategoryCount = 0;
function AjoutModeleBOT_SortList(){
var PagesTemp = AjoutModeleBOT_PageInCategory.sort();
for(var a=0;a<PagesTemp.length;a++){
if(PagesTemp[a]!=PagesTemp[(a+1)]){
AjoutModeleBOT_SortedPageInCategory[AjoutModeleBOT_SortedPageInCategoryCount] = PagesTemp[a];
AjoutModeleBOT_SortedPageInCategoryCount++
}
}
var PopContent = 'Nombre de pages à vérifier : ' + AjoutModeleBOT_SortedPageInCategoryCount + '\n';
if(AjoutModeleBOT_Multi){
PopContent += '\nCatégories : \n';
for(var p=0;p<AjoutModeleBOT_CategoryInCategory.length;p++){
PopContent += AjoutModeleBOT_CategoryInCategory[p].split(mw.config.get('wgFormattedNamespaces')[14]+':').join('') + '\n';
}
}
var Pop = confirm(PopContent);
if(Pop) AjoutModeleBOT_AddModele(0);
}
function AjoutModeleBOT_AddModele(position){
var Category = AjoutModeleBOT_SortedPageInCategory[position];
if(!Category){ alert('Travail terminé'); window.location.reload(); }
var url = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + Category.replace(/&/g, "%26") + '&action=edit';
var NouvelleRequete = new XMLHttpRequest();
NouvelleRequete.open("GET", url, true);
NouvelleRequete.send(null);
NouvelleRequete.onreadystatechange = function() {
if(NouvelleRequete.readyState == 4 && NouvelleRequete.status == 200) {
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 OldText = TextArea.value;
if((OldText.indexOf('#REDIRECT')!=-1)||(OldText.indexOf('#redirect')!=-1)||(OldText=='')){
AjoutModeleBOT_AddModele((position+1));
return;
}
// Nettoyage
OldText = OldText.replace(/\{\{Portail /ig, "\{\{Portail\|"); // Cas d'un bandeau unique : {{Portail Truc}} -> {{Portail|Truc}}
OldText = OldText.replace(/\{\{portail\|/ig, "\{\{Portail\|");
OldText = OldText.replace(/\[\[catégorie\|/ig, "\[\[Catégorie");
OldText = OldText.replace(/\[\[category\|/ig, "\[\[Catégorie");
var NouveauModele = '{{'+AjoutModeleBOT_Modele+'}}';
var Sommaire = 'Bot : Ajout modèle [[Modèle:'+AjoutModeleBOT_Modele+'|'+NouveauModele+']]';
if(OldText.indexOf(NouveauModele)==-1){
var DebutModele1 = OldText.substring(0, OldText.indexOf('{{Portail'));
var DebutModele2 = OldText.substring(0, OldText.indexOf('{{DEFAULTSORT:'));
var DebutModele3 = OldText.substring(0, OldText.indexOf('[[Catégorie:'));
var SuiteModele = OldText.split(DebutModele1).join('').split(DebutModele2).join('').split(DebutModele3).join('');
var DebutModele = OldText.split(SuiteModele).join('');
}else{
AjoutModeleBOT_AddModele((position+1));
return;
}
var TexteFinal = DebutModele + NouveauModele +'\n'+ SuiteModele;
var SommaireFinal = Sommaire + ' ; ([[Utilisateur:Dr Brains/AjoutModeleBOT.js|script]])'
document.getElementById('wpTextbox1').value = TexteFinal;
document.getElementById('wpSummary').value = SommaireFinal;
document.getElementById('wpMinoredit').checked = "checked";
if(!AjoutModeleBOT_AutoSave){
var SurEtCertain = confirm('Sauvegarder la modification ?');
if(!SurEtCertain){
var SurEtCertainBis = confirm('Page suivante ?');
if(!SurEtCertainBis){
//window.location.reload();
return;
}else{
AjoutModeleBOT_AddModele((position+1));
return;
}
}
}
var action = document.getElementById("editform").action;
var boundary = '--------123xyz';
var data = '';
data += '--' + boundary + '\nContent-Disposition: form-data; name="wpTextbox1"\n\n' + TexteFinal + '\n'
data += '--' + boundary + '\nContent-Disposition: form-data; name="wpSection"\n\n' + document.editform.wpSection.value + '\n'
data += '--' + boundary + '\nContent-Disposition: form-data; name="wpSummary"\n\n' + SommaireFinal + '\n'
data += '--' + boundary + '\nContent-Disposition: form-data; name="wpMinoredit"\n\n' + document.editform.wpMinoredit.value + '\n'
data += '--' + boundary + '\nContent-Disposition: form-data; name="wpStarttime"\n\n' + document.editform.wpStarttime.value + '\n'
data += '--' + boundary + '\nContent-Disposition: form-data; name="wpEdittime"\n\n' + document.editform.wpEdittime.value + '\n'
data += '--' + boundary + '\nContent-Disposition: form-data; name="wpEditToken"\n\n' + document.editform.wpEditToken.value + '\n'
var ajaxSubmit = new XMLHttpRequest();
ajaxSubmit.open('POST', action, true);
ajaxSubmit.setRequestHeader('Content-Type', 'multipart/form-data; boundary='+boundary);
ajaxSubmit.send(data + '--' + boundary);
ajaxSubmit.onreadystatechange = function(){
if (ajaxSubmit.readyState == 4){
while(document.body.firstChild){document.body.removeChild(document.body.firstChild);}
var ElementTraitementBis = document.createElement('div');
document.body.appendChild(ElementTraitementBis);
ElementTraitementBis.innerHTML = ajaxSubmit.responseText;
if(!document.getElementById("editform")){
AjoutModeleBOT_AddModele((position+1));
}else{
var DeuxiemeEssai = confirm('Problème !\n\nRéessayer ?');
if(DeuxiemeEssai) AjoutModeleBOT_AddModele(position);
}
}
}
}
}
}
function AjoutModeleBOT_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 AjoutModeleBOT_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>