Utilisateur:MickaëlG/DesArticlesAuHasard.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.mw.loader.using('mediawiki.util', function () {
// http://fr.wikipedia.org/wiki/Projet:JavaScript/Fonctions_globales_de_mediaWiki
// http://fr.wikipedia.org/wiki/Projet:JavaScript/Aide_Ajax
// https://developer.mozilla.org/fr/Guide_JavaScript_1.5
// https://developer.mozilla.org/fr/Référence_de_JavaScript_1.5_Core
// http://www.w3.org/TR/XMLHttpRequest/
// http://fr.wikipedia.org/w/api.php?titles=Test&action=query&prop=revisions&rvprop=&rvlimit=50&format=jsonfm
function AddRandLinks(nb,limit)
{
for (var i=0; i<nb; i++) {
var Page = RandPageWithHist(limit);
if ( Page.Histlength > 50 ) { Page.Histlength = '>50' }
MessageContent = '<a href="' + mw.config.get('wgArticlePath').split('$1').join(Page.Name) + '"> ' + Page.Name + '</a> (' + Page.Histlength + ')\n';
var Content = document.getElementById('bodyContent');
var Div = document.createElement('div');
//Div.className = "usermessage";
//Div.id = "usermessage";
Div.innerHTML = MessageContent;
Content.parentNode.insertBefore(Div, Content);
}
}
function AddRandLinksWithImportance()
{
var PageList = RandPageWithImportanceCat();
for (var page in PageList) {
MessageContent = '<a href="' + mw.config.get('wgArticlePath').split('$1').join(PageList[page].Name) + '"> ' + PageList[page].Name + '</a> (' + PageList[page].Score + ')\n';
var Content = document.getElementById('bodyContent');
var Div = document.createElement('div');
Div.innerHTML = MessageContent;
Content.parentNode.insertBefore(Div, Content);
}
}
function RandPageWithHist (limit) {
var req = new XMLHttpRequest();
var addr = 'http://fr.wikipedia.org/w/api.php?generator=random&action=query&prop=revisions&rvprop=&rvlimit=51&format=json&grnnamespace=0'
var debug = "";
do
{
resp = AjaxQuery(addr)
var Result = new Object;
for(var prop in resp.query.pages) {
Result.Name = resp.query.pages[prop].title;
Result.Histlength = resp.query.pages[prop].revisions.length;
}
debug += "NAME : " + Result.Name + " (" + Result.Histlength + ")</p>";
} while ( Result.Histlength < limit );
//debugMsg (debug);
return Result;
}
function AjaxQuery (addr) {
var req = new XMLHttpRequest();
req.open("GET", addr, false);
req.send(null);
var respStr = req.responseText;
if (typeof (JSON) != 'undefined')
var resp = JSON.parse(respStr);
else
var resp = eval('(' + respStr + ')');
return resp;
}
function RandPageWithImportanceCat() {
var addr = 'http://fr.wikipedia.org/w/api.php?action=query&generator=random&grnnamespace=1&grnlimit=10&prop=categories&cllimit=500&format=json'
var debug = ""
resp = AjaxQuery(addr)
var Result = new Array();
var res_index = 0
for(var prop in resp.query.pages) {
Result[res_index] = new Object
name = resp.query.pages[prop].title;
Result[res_index].Name = name.replace(/^Discussion:/,"");
debug += "NAME : " + Result[res_index].Name + "</p>";
Result[res_index].Categories = new Array()
var score = 0
for (var catindex in resp.query.pages[prop].categories) {
category = resp.query.pages[prop].categories[catindex].title
Result[res_index].Categories.push(category);
if ( category.search(/importance faible/) >= 0 ) {
score = Math.max(score,10);
}
else if ( category.search(/importance moyenne/) >= 0 ) {
score = Math.max(score,100);
}
else if ( category.search(/importance élevée/) >= 0 ) {
score = Math.max(score,1000);
}
else if ( category.search(/importance maximum/) >= 0 ) {
score = Math.max(score,10000);
}
}
Result[res_index].Score = score;
debug += "CAT : " + Result[res_index].Categories + "</p>";
debug += "SCORE : " + Result[res_index].Score + "</p>";
res_index++
}
//debugMsg(debug)
Result.sort( function(a,b){return b.Score - a.Score} )
return Result
}
function debugMsg (MessageContent)
{
var Content = document.getElementById('bodyContent');
var Div = document.createElement('div');
Div.className = "usermessage";
Div.id = "usermessage";
Div.innerHTML = MessageContent;
Content.parentNode.insertBefore(Div, Content);
}
function AddRandGenLink ()
{
mw.util.addPortletLink('p-navigation', mw.config.get('wgArticlePath').split('$1').join('Utilisateur:MickaëlG/Random'), 'Des articles au hasard', 'n-rand');
}
addOnloadHook(AddRandGenLink);
if(mw.config.get('wgPageName') == 'Utilisateur:MickaëlG/Random'){
//addOnloadHook(AddRandLinks(15,0));
addOnloadHook(AddRandLinksWithImportance());
}
});