Utilisateur:Dr Brains/ArticlesRecentsDev.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./*
== Code JavaScript ==
* Durée :
{{Boîte déroulante début|titre=Articles récents}}<!--
*/
// --><source lang=javascript>
var ArticlesRecents_TailleListe = 10;
var ArticlesRecents_ModeleDefautDebut = '{{Articles récents\n'
+ '|pageportail=$1\n'
+ '|catégorie=$2\n'
+ '|nbMax=$3\n'
+ '|defilant=oui\n'
+ '|hauteur=250\n'
+ '|listeRecents=\n'
+ '$4\n'
+ '|listeCatégorie=\n'
+ '$5\n'
+ '}}\n'
var ArticlesRecents_DebutListeRecents = '<!-- Ce tableau est créé automatiquement par un robot. Articles Récents DEBUT -->\n';
var ArticlesRecents_FinListeRecents = '<!-- Ce tableau est créé automatiquement par un robot. Articles Récents FIN -->\n'
var ArticlesRecents_DebutListeCategorie = '<!-- Ce tableau est créé automatiquement par un robot. Articles Récents Liste DEBUT -->\n'
var ArticlesRecents_FinListeCategorie = '<!-- Ce tableau est créé automatiquement par un robot. Articles Récents Liste FIN -->\n'
var ArticlesRecents_ResumeModif = 'Mise à jour du modèle {{Articles récents}}';
var ArticlesRecents_Adresse = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=";
if( (mw.config.get('wgAction')!="edit")&&(mw.config.get('wgAction')!="submit") ){
addOnloadHook(ArticlesRecents_init);
}
// recherche des modèles {{Articles récents}} de la page et ajout des liens de mise à jour
var ArticlesRecents_TemplateCount = 0;
function ArticlesRecents_init(){
var Cadres = document.getElementsByTagName('div');
for(s=0;s<Cadres.length;s++){
if( $(Cadres[s]).hasClass('categoryRecentChanges') ){
ArticlesRecents_TemplateCount++
Cadres[s].id = 'categoryRecentChanges_'+ArticlesRecents_TemplateCount;
var ParamCategorie = Cadres[s].firstChild.innerHTML;
var ParamPage = Cadres[s].firstChild.title;
var NewButton = '<a href="javascript:ArticlesRecents_Update(\'categoryRecentChanges_'
+ArticlesRecents_TemplateCount+ '\',\''+ParamPage.replace(/'/g,"\\'")+'\');" title="Cliquer pour mettre à jour l\'analyse de la catégorie ' + ParamCategorie + ' sur la page '+ParamPage+'" >Mettre à jour le modèle Articles récents</a>' ;
Cadres[s].innerHTML = NewButton + Cadres[s].innerHTML;
}
}
}
function ArticlesRecents_Update(id, Page){
if(!id) return;
if(!Page) Page = mw.config.get('wgPageName');
var Cadre = document.getElementById(id);
if(!Cadre){
alert('Il y a un problème avec le modèle {{Articles récents}}');
window.location.reload();
}
var Bouton = Cadre.getElementsByTagName('span')[0];
var ParamCategorie = Bouton.innerHTML;
var ParamPage = Bouton.title;
var TailleListe= Bouton.className;
if((!TailleListe)||(TailleListe=='')) TailleListe = ArticlesRecents_TailleListe;
// /*
var Suretcertain = confirm('Paramètres :'
+ '\n* Page à mettre à jour : -( ' + ParamPage + ' )- '
+ '\n* Catégorie : -( ' + ParamCategorie + ' )- '
+ '\n* Maximum : -( ' + TailleListe + ' )- '
+ '\n\n Lancer la mise à jour ?' );
if(!Suretcertain) window.location.reload();
// */
var url = ArticlesRecents_Adresse + Page + '&action=render' ;
var ajaxRequest = new XMLHttpRequest();
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 OldRecents = new Array();
var OldRecentsCount = -1;
var OldCategory = new Array();
var OldCategoryCount = -1;
var Liste1 = document.getElementsByTagName('ol')[0];
if(Liste1) ArticlesRecents_ListeArticlesRecents = Liste1.getElementsByTagName('a');
if( ArticlesRecents_ListeArticlesRecents.length>0 ){
for(var r=0;r<ArticlesRecents_ListeArticlesRecents.length;r++){
OldRecentsCount++
OldRecents[OldRecentsCount] = ArticlesRecents_ListeArticlesRecents[r].title;
while(OldRecents[OldRecentsCount].indexOf('&')!=-1){
OldRecents[OldRecentsCount] = OldRecents[OldRecentsCount].split('&').join("&");
if(OldRecents[OldRecentsCount].indexOf('&')==-1) break;
}
while(OldRecents[OldRecentsCount].indexOf(''')!=-1){
OldRecents[OldRecentsCount]= OldRecents[OldRecentsCount].split(''').join("'");
if(OldRecents[OldRecentsCount].indexOf(''')==-1) break;
}
while(OldRecents[OldRecentsCount].indexOf('"')!=-1){
OldRecents[OldRecentsCount] = OldRecents[OldRecentsCount].split('"').join('"');
if(OldRecents[OldRecentsCount].indexOf('"')==-1) break;
}
}
}
var Liste2 = document.getElementsByTagName('ul')[0];
if(Liste2) ArticlesRecents_ListeArticlesCategorie = Liste2.getElementsByTagName('a');
if(ArticlesRecents_ListeArticlesCategorie.length>0 ){
for(var c=0;c<ArticlesRecents_ListeArticlesCategorie.length;c++){
OldCategoryCount++
OldCategory[OldCategoryCount] = ArticlesRecents_ListeArticlesCategorie[c].title;
while(OldCategory[OldCategoryCount].indexOf('&')!=-1){
OldCategory[OldCategoryCount] = OldCategory[OldCategoryCount].split('&').join("&");
if(OldCategory[OldCategoryCount].indexOf('&')==-1) break;
}
while(OldCategory[OldCategoryCount].indexOf(''')!=-1){
OldCategory[OldCategoryCount]= OldCategory[OldCategoryCount].split(''').join("'");
if(OldCategory[OldCategoryCount].indexOf(''')==-1) break;
}
while(OldCategory[OldCategoryCount].indexOf('"')!=-1){
OldCategory[OldCategoryCount] = OldCategory[OldCategoryCount].split('"').join('"');
if(OldCategory[OldCategoryCount].indexOf('"')==-1) break;
}
}
}
var NewCategory = new Array();
var NewCategoryCount = -1;
ArticlesRecents_CheckCategory(id, ParamPage, ParamCategorie, TailleListe, OldCategory, OldRecents, NewCategory, NewCategoryCount);
}
}
}
function ArticlesRecents_CheckCategory(id, ParamPage, ParamCategorie, TailleListe, OldCategory, OldRecents, NewCategory, NewCategoryCount, Continue){
if(!Continue) Continue='';
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=' + ParamCategorie + '&cmcontinue=' + Continue;
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){
var TitrePage = ContenuInformation.split('title="')[1].split('"')[0];
while(TitrePage.indexOf('&')!=-1){
TitrePage = TitrePage.split('&').join("&");
if(TitrePage.indexOf('&')==-1) break;
}
while(TitrePage.indexOf(''')!=-1){
TitrePage = TitrePage.split(''').join("'");
if(TitrePage.indexOf(''')==-1) break;
}
while(TitrePage.indexOf('"')!=-1){
TitrePage = TitrePage.split('"').join('"');
if(TitrePage.indexOf('"')==-1) break;
}
NewCategoryCount++
NewCategory[NewCategoryCount] = TitrePage;
}
if(ContenuInformation.indexOf('cmcontinue=')!=-1){
AutreRequeteNecessaire = true;
var AutreRequeteContinue = ContenuInformation.split('cmcontinue="')[1].split('"')[0];
}
}
if(AutreRequeteNecessaire==true){
ArticlesRecents_CheckCategory(id, ParamPage, ParamCategorie, TailleListe, OldCategory, OldRecents, NewCategory, NewCategoryCount, AutreRequeteContinue);
}else{
ArticlesRecents_SortList(id, ParamPage, ParamCategorie, TailleListe, OldCategory, OldRecents, NewCategory);
}
}
}
}
function ArticlesRecents_SortList(id, ParamPage, ParamCategorie, TailleListe, OldCategory, OldRecents, NewCategory){
var NewRecents = new Array();
var NewRecentsCount = -1;
for(var a=0;a<NewCategory.length;a++){
var PageMatch = false;
for(var b=0;b<OldCategory.length;b++){
if(NewCategory[a] == OldCategory[b]) PageMatch = true;
}
if(PageMatch == false){
NewRecentsCount++
NewRecents[NewRecentsCount] = NewCategory[a];
}
}
for(var c=0;c<OldRecents.length;c++){
if(NewRecentsCount<(TailleListe-1)){
NewRecentsCount++
NewRecents[NewRecentsCount] = OldRecents[c];
}
}
ArticlesRecents_Edit(id, ParamPage, ParamCategorie, TailleListe, NewCategory, NewRecents);
}
function ArticlesRecents_Edit(id, ParamPage, ParamCategorie, TailleListe, NewCategory, NewRecents){
var ajaxRequest = new XMLHttpRequest();
var url = ArticlesRecents_Adresse + ParamPage + '&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 NouvelleListeRecents = ArticlesRecents_DebutListeRecents;
for(var r=0;r<NewRecents.length;r++){
NouvelleListeRecents += '# [[' + NewRecents[r] + ']]\n';
}
NouvelleListeRecents += ArticlesRecents_FinListeRecents;
var NouvelleListeCategorie = ArticlesRecents_DebutListeCategorie;
for(var cat=0;cat<NewCategory.length;cat++){
NouvelleListeCategorie += '* [[' + NewCategory[cat] + ']]\n';
}
NouvelleListeCategorie += ArticlesRecents_FinListeCategorie;
if(
(ContenuPage.indexOf(ArticlesRecents_DebutListeCategorie)!=-1) &&
(ContenuPage.indexOf(ArticlesRecents_FinListeCategorie)!=-1) &&
(ContenuPage.indexOf(ArticlesRecents_DebutListeRecents)!=-1) &&
(ContenuPage.indexOf(ArticlesRecents_FinListeRecents)!=-1) ){
var debutTexte = ContenuPage.substring(0, ContenuPage.indexOf(ArticlesRecents_DebutListeCategorie));
var AncienModele = ContenuPage.substring(0, ContenuPage.indexOf(ArticlesRecents_FinListeCategorie)) + ArticlesRecents_FinListeCategorie;
AncienModele = AncienModele.replace(debutTexte, "");
var finTexte = ContenuPage.split(debutTexte).join('').split(AncienModele).join('');
var TexteFinal = debutTexte + NouvelleListeCategorie + finTexte;
/*
alert('Début Texte : \n\n' + debutTexte);
alert('NouvelleListeCategorie : \n\n' + NouvelleListeCategorie);
alert('Fin Texte : \n\n' + finTexte);
*/
debutTexte = TexteFinal.substring(0, TexteFinal.indexOf(ArticlesRecents_DebutListeRecents));
AncienModele = TexteFinal.substring(0, TexteFinal.indexOf(ArticlesRecents_FinListeRecents)) + ArticlesRecents_FinListeRecents;
AncienModele = AncienModele.replace(debutTexte, "");
finTexte = TexteFinal.split(debutTexte).join('').split(AncienModele).join('');
TexteFinal = debutTexte + NouvelleListeRecents + finTexte;
/*
alert('Début Texte : \n\n' + debutTexte);
alert('NouvelleListeRecents : \n\n' + NouvelleListeRecents);
alert('Fin Texte : \n\n' + finTexte);
*/
}else{
var TexteFinal = ArticlesRecents_ModeleDefautDebut;
TexteFinal = TexteFinal.split('$1').join(ParamPage);
TexteFinal = TexteFinal.split('$2').join(ParamCategorie);
TexteFinal = TexteFinal.split('$3').join(TailleListe);
TexteFinal = TexteFinal.split('$4').join(NouvelleListeRecents);
TexteFinal = TexteFinal.split('$5').join(NouvelleListeCategorie);
}
document.getElementById ("wpTextbox1").value = TexteFinal ;
document.editform.wpSummary.value = AncienResumeModif + ArticlesRecents_ResumeModif ;
// /*
var SurEtCertain = confirm('Publier la modification ?');
if(!SurEtCertain) 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' + AncienResumeModif + ArticlesRecents_ResumeModif + '\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")){
window.location.reload();
}else{
var DeuxiemeEssai = confirm('Il y a eu un problème !\n\nRéessayer ?');
if(DeuxiemeEssai){
ArticlesRecents_Update(id);
}else{
window.location.reload();
}
}
}
}
}
}
}
//</nowiki></pre></source>{{Boîte déroulante fin}}