MediaWiki:Gadget-PageAuHasard.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) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5./* {{Catégorisation JS|PageAuHasard}} */
/*
== Code JavaScript ==
{{Boîte déroulante/début|titre=Lien au hasard}}<!--
*/
// --><source lang=javascript>
// <nowiki>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var PageAuHasard_Adresse = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=";
var PageAuHasard_ModeleDefaut = '<noinclude>\n'
+ '{{Page au hasard\n'
+ '|page=$1\n'
+ '|catégorie=$2\n'
+ '|miseAjour=$3\n'
+ '|nbArticles=$4\n'
+ '}}</noinclude>';
var PageAuHasard_DebutModele = '<!-- \nCe tableau est créé automatiquement par un robot. Page au hasard DEBUT \n -->';
var PageAuHasard_FinModele = '<!-- \nCe tableau est créé automatiquement par un robot. Page au hasard FIN \n -->';
var PageAuHasard_ResumeModif = 'Mise à jour du modèle [[Modèle:Page au hasard|{{Page au hasard}}]]';
var PageAuHasard_StartButton = '<img height="50" width="50" src="//up.wiki.x.io/wikipedia/commons/thumb/4/4a/Crystal_Clear_action_exit.svg/50px-Crystal_Clear_action_exit.svg.png" alt="Lancer la mise à jour">';
var PageAuHasard_WorkingButton = '<img height="50" width="50" src="//up.wiki.x.io/wikipedia/commons/d/de/Ajax-loader.gif" alt="Mise à jour en cours">';
// recherche des modèles {{Page au hasard}} de la page et ajout des liens de mise à jour
var PageAuHasard_AnalysisDivCount = 0;
function PageAuHasard_makeUpdateLinks(){
var Cadres = document.getElementsByTagName('span');
for(s=0;s<Cadres.length;s++){
if( $(Cadres[s]).hasClass('RandomLink') ){
PageAuHasard_AnalysisDivCount++;
Cadres[s].id = 'PageAuHasard_'+PageAuHasard_AnalysisDivCount;
var ParamCategorie = Cadres[s].firstChild.innerHTML;
var ParamPage = Cadres[s].firstChild.title;
var NewButton = '<center><a id="LienPageHasard_'+PageAuHasard_AnalysisDivCount+'" '
+ 'href="javascript:PageAuHasard_GetParams('+PageAuHasard_AnalysisDivCount+ ');" '
+ 'title="Cliquer pour mettre à jour le contenu de la catégorie ' + ParamCategorie + ' sur la page '+ParamPage+'" >'
+ PageAuHasard_StartButton
+ '</a></center><br />' ;
Cadres[s].innerHTML += NewButton ;
}
}
}
function PageAuHasard_GetParams(ID){
var Modele = document.getElementById('PageAuHasard_'+ID);
if(!Modele) return;
var Cadre = Modele.firstChild;
if(!Cadre) return;
var ParamCategorie = Cadre.innerHTML;
var ParamPage = Cadre.title;
var Pop = 'Catégorie à vérifier :\n'
+ '* '+ParamCategorie+'\n\n'
+ 'Page à mettre à jour :\n'
+ '* '+ParamPage+'\n\n'
+ 'Continuer ?';
var SurEtCertain = confirm(Pop);
if(SurEtCertain){
PageAuHasard_CheckCategory(ParamPage, ParamCategorie);
var Lien = document.getElementById('LienPageHasard_'+ID);
if(Lien){
Lien.innerHTML = PageAuHasard_WorkingButton;
Lien.title = "Arrêter la mise à jour" ;
Lien.href = "javascript:window.location.reload();";
Lien.blur();
}
}
}
// ///////////////////////////////////////////////////// REQUÊTE PAGES DE LA CATÉGORIE /////////////////////////
function PageAuHasard_CheckCategory(ParamPage, ParamCategorie, ParamContinue, PageList){
if(!PageList) PageList = [];
var APILimit = 499;
if( (mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1) ){
APILimit = 4999;
}
var queryopt = {
action : 'query',
list : 'categorymembers',
cmlimit : APILimit,
cmtitle : ParamCategorie
};
if(ParamContinue) queryopt.cmcontinue = ParamContinue;
queryopt.continue = '';
var api = new mw.Api();
api.get(queryopt).then( function ( data ) {
var categorymembers = data.query.categorymembers;
if ( categorymembers ) {
for(var a=0,l=categorymembers.length;a<l;a++){
var TitrePage = categorymembers[a].title;
var NS = parseInt(categorymembers[a].ns);
if(NS === 0) PageList.push(TitrePage);
}
}
if(data.continue && data.continue.cmcontinue){
PageAuHasard_CheckCategory(ParamPage, ParamCategorie, data.continue.cmcontinue, PageList);
}else{
PageAuHasard_Edit(ParamPage, ParamCategorie, PageList);
}
});
}
// ///////////////////////////////////////////////////// ÉDITION /////////////////////////
function PageAuHasard_Edit(ParamPage, ParamCategorie, PageList){
var ajaxRequest = new XMLHttpRequest();
var URL = PageAuHasard_Adresse + encodeURIComponent(ParamPage) + '&action=edit';
$.ajax({url : URL, complete : function(Req){
while(document.body.firstChild){document.body.removeChild(document.body.firstChild);}
document.body.innerHTML = Req.responseText;
var Aujourdhui = new Date();
var Minutes = Aujourdhui.getMinutes();
var Heures = Aujourdhui.getHours();
var Jour = Aujourdhui.getDate();
var Mois = Aujourdhui.getMonth() + 1;
var Annee = Aujourdhui.getFullYear();
var ZeroMinutes = Minutes < 10 ? "0" : "";
var ZeroHeures = Heures < 10 ? "0" : "";
var ZeroJour = Jour < 10 ? "0" : "";
var ZeroMois = Mois < 10 ? "0" : "";
var PageAuHasard_miseAjour = 'le '+ZeroJour+Jour+'/'+ZeroMois+Mois+'/'+Annee+' à '+ZeroHeures+Heures+':'+ZeroMinutes+Minutes;
var PageAuHasard_TotalArticles = PageList.length;
var NouveauModele = PageAuHasard_ModeleDefaut;
NouveauModele = NouveauModele.split('$1').join(ParamPage);
NouveauModele = NouveauModele.split('$2').join(ParamCategorie);
NouveauModele = NouveauModele.split('$3').join(PageAuHasard_miseAjour);
NouveauModele = NouveauModele.split('$4').join(PageAuHasard_TotalArticles);
NouveauModele += PageAuHasard_DebutModele + '<includeonly>{{#invoke:random|item';
for(a=0;a<PageList.length;a++){
NouveauModele += '|'+PageList[a].replace(/=/g, '{{=}}');
}
NouveauModele += '|link=yes}}</includeonly>' + PageAuHasard_FinModele;
var ContenuPage = document.getElementById("wpTextbox1").value;
var AncienResumeModif = document.editform.wpSummary.value;
document.getElementById("wpTextbox1").value = NouveauModele;
document.editform.wpSummary.value = AncienResumeModif + PageAuHasard_ResumeModif ;
var SurEtCertain = confirm('Sauvegarder la modification ?');
if(SurEtCertain) document.editform.submit();
}});
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Lancement
if( (mw.config.get('wgAction')!="edit")&&(mw.config.get('wgAction')!="submit") ){
$(PageAuHasard_makeUpdateLinks);
}
// </nowiki>